免责声明:文档在线网中所有的文档资料均由文档在线网会员提供,该文档资料的版权属于提供者所有。文档在线网会对会员提供的文档资料进行筛选和编辑,但是并不声明或保证其内容的合法性和正确性。华南农业大学信息学院设计性、综合性实验实验项目名称:计算机组成原理综合设计实验项目性质:综合性、设计性实验所属课程名称:计算机组成原理开设时间:2009学年第一学期一、实验目的通过对简单微指令控制器的设计与实现,使抽象的理论原理在实践中得到应用,由此巩固学习内容。免责声明:文档在线网中所有的文档资料均由文档在线网会员提供,该文档资料的版权属于提供者所有。文档在线网会对会员提供的文档资料进行筛选和编辑,但是并不声明或保证其内容的合法性和正确性。二、实验内容按照实验原理图设计并实现一个微型指令控制器,主要实现地址转换,指令储存等功能。三、详细设计本微指令控制器由微指令寄存器和地址转移逻辑等几个部件组成,控制存储器用来存放实现全部指令系统的微程序;微指令寄存器用来存放由控制存储器读出的一条微指令信息,其中微地址寄存器决定将要访问的下一条微指令的地址,而微命令寄存器则保存一条微指令的操作控制字段和判别测试字段的信息。最后地址转移逻辑用于根据从微指令中读出的P字段来判断下一条微指令的地址,承担自动完成修改微地址的任务。分别使用寄存器,控制存储器,逻辑转移指令,节拍发生器等部件实现。//地址寄存器libraryieee;useieee.std_logic_1164.all;entityaddr_logicisport(p_segment,op:instd_logic_vector(1downto0);get_op,clk:instd_logic;addr_out:outstd_logic_vector(1downto0));endaddr_logic;逻辑转移部件地址寄存器控制存储器P字段OP免责声明:文档在线网中所有的文档资料均由文档在线网会员提供,该文档资料的版权属于提供者所有。文档在线网会对会员提供的文档资料进行筛选和编辑,但是并不声明或保证其内容的合法性和正确性。architectureaddrlogicofaddr_logicisbeginprocess(p_segment,op,get_op,clk)beginifrising_edge(clk)thenifget_op='1'thenaddr_out=op;endif;endif;endprocess;endaddrlogic;//计时器libraryieee;useieee.std_logic_1164.all;entitypulseisport(clk,clr:instd_logic;t:outstd_logic_vector(4downto1));endpulse;architectures_pulseofpulseiscomponentwdffisport(d,clk,r,s:instd_logic;q,nq:outstd_logic);endcomponent;signalc,nc:std_logic_vector(4downto1);signalcp,nclk,rr:std_logic;beginnclk=notclk;c4:wdffportmap(c(3),nclk,'1',clr,c(4),nc(4));cp=not(nclkandnc(4));rr=not(clkandc(4));c1:wdffportmap('1',cp,rr,'1',c(1),nc(1));c2:wdffportmap(c(1),cp,rr,'1',c(2),nc(2));c3:wdffportmap(c(2),cp,rr,'1',c(3),nc(3));t(1)=c(1)andnc(2);t(2)=c(2)andnc(3);t(3)=c(3);t(4)=nc(1);ends_pulse;免责声明:文档在线网中所有的文档资料均由文档在线网会员提供,该文档资料的版权属于提供者所有。文档在线网会对会员提供的文档资料进行筛选和编辑,但是并不声明或保证其内容的合法性和正确性。//总控制器libraryieee;useieee.std_logic_1164.all;entityaddisport(addin:instd_logic_vector(3downto0);clk:instd_logic;addout:outstd_logic_vector(3downto0));endadd;architectures_addofaddiscomponentwdffisport(d,clk,r,s:instd_logic;q,nq:outstd_logic);endcomponent;beginw1:wdffportmap(addin[0],clk,1,1,addout[0],0);w2:wdffportmap(addin[1],clk,1,1,addout[1],0);w3:wdffportmap(addin[2],clk,1,1,addout[2],0);w4:wdffportmap(addin[3],clk,1,1,addout[3],0);ends_add;signalc1,c2,c3,c4:std_logic_vector(4downto2);signaly1,y2,y3,y4:std_logic_vector(4downto1);signals1,s2,s3:std_logic_vector(4downto1);//控制存储器libraryieee;useieee.std_logic_1164.all;entityromisport(addr:instd_logic_vector(1downto0);ce:instd_logic;dataout:outstd_logic_vector(22downto0));endrom;architectureb_romofromisbegindataout=10000000000000000000001whenaddr=00andce='1'else11000000000000000000010whenaddr=01andce='1'else免责声明:文档在线网中所有的文档资料均由文档在线网会员提供,该文档资料的版权属于提供者所有。文档在线网会对会员提供的文档资料进行筛选和编辑,但是并不声明或保证其内容的合法性和正确性。00100000000000000000000whenaddr=10andce='1'else10000000000000000000000;endb_rom;//逻辑转换器libraryieee;useieee.std_logic_1164.all;entitylogic_changeisport(op:instd_logic_vector(3downto0);p:instd_logic_vector(5downto0);clk:instd_logic;c:instd_logic;addout:outstd_logic_vector(3downto0);endlogic_change;architectures_logic_changeoflogic_changisbeginprocess(op,next,p,clk,addout)beginaddout1[3]=p[5]andp[0]andp[1];addout1[2]=p[4]andp[0]andp[1];addout1[1]=p[3]andp[0]andp[1];addout1[0]=p[2]andp[0]andp[1];addout2[3]=p[5]andp[0];addout2[2]=0;addout2[1]=p[3]andp[0];addout2[0]=0;addout3[3]=p[5]or0;addout3[2]=p[4]or0;addout3[1]=p[3]or0;addout3[0]=p[2]andp[1];addout=(addout1and(notp[1])and(notp[0]))or(addout2andp[0])or(addout3andp[1]);endprocess;ends_logic_change;//主模块LIBRARYIEEE;免责声明:文档在线网中所有的文档资料均由文档在线网会员提供,该文档资料的版权属于提供者所有。文档在线网会对会员提供的文档资料进行筛选和编辑,但是并不声明或保证其内容的合法性和正确性。USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;useieee.numeric_std.all;ENTITYtestISPORT(op:INSTD_LOGIC_VECTOR(1DOWNTO0);ra,rb:instd_logic_vector(4downto0);get_op,clk,clr:instd_logic;data_out:OUTSTD_LOGIC_VECTOR(5DOWNTO1));ENDtest;architecturemy_testoftestiscomponentromisport(addr:instd_logic_vector(1downto0);ce:instd_logic;dataout:outstd_logic_vector(22downto0));endcomponent;componentpulseisport(clk,clr:instd_logic;t:outstd_logic_vector(4downto1));endcomponent;componentmaddr_risport(clk,clr:instd_logic;maddr_in:instd_logic_vector(2downto1);maddr_out:outstd_logic_vector(2downto1));endcomponent;componentmcmd_risport(clk,clr:instd_logic;mcmd_in:instd_logic_vector(23downto1);mcmd_out:outstd_logic_vector(23downto1));endcomponent;componentaddr_logicisport(p_segment,op:instd_logic_vector(1downto0);get_op,clk:instd_logic;addr_out:outstd_logic_vector(1downto0));endcomponent;componentadd_subisport(a,b:instd_logic_vector(5downto1);免责声明:文档在线网中所有的文档资料均由文档在线网会员提供,该文档资料的版权属于提供者所有。文档在线网会对会员提供的文档资料进行筛选和编辑,但是并不声明或保证其内容的合法性和正确性。cs,ci:instd_logic;s:outstd_logic_vector(5downto1));endcomponent;componentbcdisPORT(a:inSTD_LOGIC_VECTOR(4DOWNTO0);b:inSTD_LOGIC_VECTOR(4DOWNTO0);cs:instd_logic;c:OUTSTD_LOGIC_VECTOR(4DOWNTO0));endcomponent;signalt:std_logic_vector(3downto0);--脉冲信号;signalp_seg:std_logic_vector(1downto0);--p字段;signaladdr_o1,addr_o2:std_logic_vector(1downto0);--逻辑转移部件输出;signald_out,control:std_logic_vector(22downt