




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、桂林电子科技大学课程设计论文报告纸 编号: 计算机组成原理课程设计说明书题 目:设计一台嵌入式CISC模型计算机 系 别: 专 业: 学生姓名: 学 号: 指导教师: 2013年 4 月 09 日目 录1 课程设计的题目及内容11.1 课程设计的题目11.2 课程设计完成的内容12 总体设计22.1 CISC模型机数据通路框图22.2 操作控制器的逻辑结构框图22.3 模型机的指令系统和所有指令的指令格式32.4 所有机器指令的微程序流程图53 汇编语言及机器语言源程序83.1 汇编语言源程序83.2 机器语言源程序84 机器语言源程序的功能仿真波形图及结果分析95 故障现象与故障分析126
2、体会137 软件清单147.1 算术逻辑运算单元ALU147.2 状态条件寄存器单元167.3 通用寄存器单元167.4 1:2分配器单元177.5 3选1数据选择单元187.5.1 3选1数据选择器MUX3_1187.5.2 3选1数据选择器MUX3_2187.6 4选1数据选择器单元197.6.1 4选1数据选择器MUX4_1197.6.1 4选1数据选择器MUX4_2207.7 程序计数器单元217.8 地址寄存器单元227.9 ROM存储器单元237.10 RAM存储器单元247.11 指令寄存器单元257.12 指令转换器单元257.13 时序产生器单元267.14 微程序控制器单元
3、27 1 课程设计的题目及内容1.1 课程设计的题目 设计一台嵌入式CISC模型计算机(采用定长CPU周期、联合控制方式),并运行能完成一定功能的机器语言程序进行验证,机器语言源程序功能如下: 要求连续输入5个有符号整数(用8位二进制补码表示,十六进制数输入)求所有负数的平方和并输出显示。说明: 5个有符号数从外部输入; 一定要使用符号位(比如说SF),并且要使用负的时候转移(JS)或不为负的时候转移(比如说JNS)指令。 采用三数据总线结构的运算器,采用RAM,先将输入数据依次存放在RAM的某一连续的存储区域内,再依次读出判断是否为负数,若为负数再求其平方和。1.2 课程设计完成的内容 1.
4、完成系统的总体设计,画出模型机数据通路框图; 2.设计微程序控制器(CISC模型计算机)的逻辑结构框图; 3.设计机器指令格式和指令系统; 4.设计时序产生器电路; 5.设计所有机器指令的微程序流程图; 6.设计操作控制器单元;在CISC模型计算机中,设计的内容包括微指令格式(建议采用全水平型微指令)、微指令代码表(根据微程序流程图和微指令格式来设计)和微程序控制器硬件电路(包括地址转移逻辑电路、微地址寄存器、微命令寄存器和控制存储器等。具体电路根据微程序控制器的逻辑结构框图、微指令格式和微指令代码来设计)。 7.设计模型机的所有单元电路,并用VHDL语言(也可使用GDF文件-图形描述文件)对
5、模型机中的各个部件进行编程,并使之成为一个统一的整体,即形成顶层电路或顶层文件; 8.由给出的题目和设计的指令系统编写相应的汇编语言源程序; 9.根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其设计到模型机中的ROM中去; 10.使用EDA软件进行功能仿真,要保证其结果满足题目的要求;(其中要利用EDA软件提供的波形编辑器,选择合适的输入输出信号及中间信号进行调试。)2 总体设计2.1 CISC模型机数据通路框图整个系统数据通路如下所示,但是在数据Cache处(RAM)将双向的数据总线改为单向的输出数据总线和输入数据总线,还有就是所有的输出总线不能直接连接,需增加多路选择器
6、。2.2 操作控制器的逻辑结构框图指令寄存器IR操作码微地址寄存器地址译码控制存储器地址转移逻辑状态条件微命令寄存器P字段操作控制字段微命令信号2.3 模型机的指令系统和所有指令的指令格式本指令系统共采用了12条不同功能的指令,指令字长度为双字节,寻址方式有三种,分别是寄存器寻址、直接寻址和立即寻址。为了完成求负数和的平方和的功能,系统共设计了12条指令:IN1(输入),OUT1(输出),MOV(将一个数送入寄存器),LAD(取数),STOI(存数),JNS(条件转移指令),JMP(无条件跳转指令),ADD(两数相加),MUL(两数相乘),INC(自增1),DEC(字减1),TEST(测试)。
7、下面分类介绍这些指令的指令格式。(1)I/O指令 输入指令(IN1)格式:151211 10 9 870操作码X XRdXXXXXXXX 输出指令(OUT1)格式:151211 109 870操作码RsXXXXXXXXXX(2) 转移指令 条件转移指令(JNS)格式:151211 109 870操作码X XXXaddr 无条件跳转指令(JMP)格式:151211 109 870操作码X XXXaddr(3)数据传输指令 传数指令(MOV)格式:151211 109 870操作码X XRdim 取数指令(LAD)格式:151211 109 870操作码RsRdXXXXXXXX 存数指令(STOI
8、)格式:151211 109 870操作码RsRdXXXXXXXX(4)运算指令 加法指令(ADD)格式:151211 109 870操作码RsRdXXXXXXXX 乘法指令(MUL)格式:151211 109 870操作码RsRdXXXXXXXX 自加1指令(INC)格式:151211 10 9 870操作码X XRdXXXXXXXX 自减1指令(DEC)格式:151211 10 9 870操作码X XRdXXXXXXXX 测试指令(TEST)格式:151211 109 870操作码RsXXXXXXXXXX 由此可见,本模型机中的指令系统共有12条基本指令。表2.3给出了每条指令的助记符、指
9、令格式和功能。助记符号指令格式功 能151211 109 870IN1 Rd 0001 XX RdXXXXXXXX输入设备RdMOV Rd,im 0010 XX Rd im立即数RdLAD (Rs),Rd 0011 Rs RdXXXXXXXX(Rs)RdADD Rs,Rd 0100 Rs RdXXXXXXXX(Rs)+(Rd)RdINC Rd 0101 XX RdXXXXXXXX(Rd)+1RdDEC Rd 0110 XX RdXXXXXXXX(Rd)-1RdJNS addr 0111 XX XX addr若为正数,addrPCSTOI Rs,(Rd) 1000 Rs RdXXXXXXXX(R
10、s)(Rd)JMP addr 1001 XX XX addraddrPCOUT1 Rs 1010 Rs XXXXXXXXXX(Rs)输出设备MUL Rs,Rd 1011 Rs RdXXXXXXXX(Rs)*(Rd)RdTEST Rs 1100 Rs XXXXXXXXXX测试符号位 其中,对Rs和Rd的规定:Rs或Rd选定的寄存器0 0R00 1R11 0R2 1 1R3 模型机规定数据的表示采用定点整数补码表示,单字长为8位,其格式如下:76 5 4 3 2 1 0符号位尾数 T1、T2、T3、T4与CLR、Q之间的关系图QCLRT1T2T3T4一个CPU周期现在,我们开始微程序控制器的设计,
11、它包括以下几部分工作: (1)根据指令格式和指令系统设计所有机器指令的微程序流程图,并确定每条微指令的微地址和后继微地址; (2)设计微指令格式和微指令代码表; (3)设计地址转移逻辑电路; (4)设计微程序控制器中的其它逻辑单元电路,包括微地址寄存器、微命令寄存器和控制存储器; (5)设计微程序控制器的顶层电路。2.4 所有机器指令的微程序流程图 PCABUS(I) RD ROM I BUSIR PC+1P(1)00STOITESTMULOUT1MOVJMPJNSADDDIN1LADD DECINC0C0304010B0A090807060502RsX锁存CF、SFRsXRdYX*YRd锁存
12、CF、SFRsLEDIR(A)PCRdARRdYY-1Rd锁存CF、SFRdYY+1Rd锁存CF、SFRsXRdYX+YRd锁存CF、SFRsARIR(A)RdSWRd0E0D00000000RD RAMDBUSRdRD RAMDBUSRd000000000000P(2)IR(A)PC0000SF=10F00SF=0 CISC模型机系统使用的微指令采用全水平型微指令,字长为26位,其中微命令字段为18位,P字段为2位,后继微地址为6位,其格式如下: 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0LOAD L
13、DPC LDAR LDIR LDRi LDPSW RS_B S2 S1 S0 ALU_B SW_B LED_S RD_D CS_D RAM_B CS_I ADDR_B P1 P2 后继微地址由微指令格式和微程序流程图编写的微指令代码表如下所示,在微指令的代码表中微命令字段从左边到右代表的微命令信号依次为:LOAD、LDPC、LDAR、LDIR、LDRi、LDPSW、RD_B、RS_B、s2、S1、S0、ALU_B、SW_B、LED_S、RD_D、CS_D、RAM_B、CS_I、ADDR_B 。微地址LOADLDPCLDARLDIRLDRiLDPSW RS_BS2S1S0 ALU_BSW_BLE
14、D_SRD_DCS_DRAM_B CS_I ADDR_BP1P2后继微地址00000011010010001111110110000000000001100010100010111111000000000000101000101000111111100000000000001110100000001111111100001101000100100011100001111111000000000001011000111010011111110000000000011010001110110111111100000000000111100000100011111111000000000010001
15、010001110011111110000111000100101000010001111111000000000001010100000000011011111000000000010111000111100011111110000000000110010000111011111111100000000001101100010100011110011000000000011101000000000111001110000000001000001000010001111111000000000第三步:设计好了微指令代码表之后,开始设计地址转移逻辑电路地址转移逻辑电路是根据微程序流程图3-2中的
16、棱形框部分及多个分支微地址,利用微地址寄存器的异步置“1”端,实现微地址的多路转移。由于微地址寄存器中的触发器异步置“1”端低电平有效,与µA4µA0对应的异步置“1”控制信号SE5SE1的逻辑表达式为:(µA5的异步置“1”端SE5实际未使用)SE4=SF·P(2)·T4SE3=I15·P(1)·T4SE2=I14·P(1)·T4SE1=I13·P(1)·T4SE0=I12·P(1)·T42.5 嵌入式CISC模型计算机的顶层电路图3 汇编语言及机器语言源程序3.
17、1 汇编语言源程序 地址(十六进制)汇编语言源程序00 MOV R1,00H 01 MOV R2,04H 02L0: IN1 R0 03 STOI R0,(R1)04 INC R105 DEC R206 JNS L007 MOV R0,008 MOV R1,00H 09 MOV R2,04H 0AL1: LAD (R1),R30B TEST R30C JNS L20D MUL R3,R30E ADD R3,R0 0FL2: INC R110 DEC R211 JNS L112END:OUT1 R0 13 JMP END3.2 机器语言源程序根据设计的指令格式,将汇编语言源程序手工转换成机器语言
18、源程序,并将其设计到模型机中的ROM中去: 地址(十六进制)汇编语言源程序 机器语言源程序(二进制)00 MOV R1,00H 001000010000000001 MOV R2,04H 001000100000010002L0: IN1 R0 000100000000000003 STOI R0,(R1)100000010000000004 INC R1010100010000000005 DEC R2011000100000000006 JNS L0011100000000001007 MOV R0,0001000000000000008 MOV R1,00H 00100001000000
19、0009 MOV R2,04H 00100010000001000AL1: LAD (R1),R300110111000000000B TEST R311001100000000000C JNS L201110000000011110D MUL R3,R310111111000000000E ADD R3,R0 01001100000000000FL2: INC R1010100010000000010 DEC R2011000100000000011 JNS L1011100000000101012END:OUT1 R0 101000000000000013 JMP END100100000
20、00100104 机器语言源程序的功能仿真波形图及结果分析上图所示是汇编程序中前2个 MOV指令的仿真执行过程。可以看到,R1寄存器的内容是00,R2寄存器的内容由00变为04了。然后执行IN1指令,输入数据,输入了FE,由上图可以看到,IN1指令执行完后R0寄存器中内容变成了FE。再执行STOI指令,将(R0)(R1),可以看到,执行完该指令后,RAM的00H存储器的内容为FE。然后执行INC指令,可以看到,R1的内容由00变为01,然后执行DEC指令,R2的内容由04变为03,然后执行JNS指令,判断的出R2的内容的符号位为0,跳转到L0。然后再循环执行IN1,STOI,INC,DEC,J
21、NS指令,直至R2的内容的符号位为1。共执行了IN1,STOI,INC,DEC,JNS指令各五次,可以由上图看到,依次输入的五个数为FE,02,FE,FE,FE。R0的内容依次为FE,02,FE,FE,FE。R1的内容000102030405,R2的内容0403020100FF。已将输入的五个数据依次存放在RAM的00H05H连续的五个存储区域,00H存储单元的内容为FE,01H存储单元的内容为02,02H存储单元的内容为FE,03H存储单元的内容为FE,03H存储单元的内容为FE,04H存储单元的内容为FE。然后执行3个MOV 指令,可以看到R0的内容由FE变为00,R1的内容由05变为00
22、,R2的内容由FF变为04。然后执行LAD指令,取数功能,将RAM的00存储器中的内容FE取出放入R3中,由上图可以看到,R3的内容由00变成了FE。然后执行TEST指令,测试R3的内容,然后执行JNS指令,若R3中的内容的SF=0,则跳转到L2。若R3中的内容的SF=1,则顺序执行程序。因为R3中的内容为FE,其SF=1,故顺序执行程序。然后执行MUL指令,由上图可以看到,FE求平方和之后结果是04,R3变成04,然后执行ADD操作,和放在R0中,R0变成04。R1自增1变成01,R2自减1变成03。程序顺序执行下条语句。 R2的符号位为0,跳转到L1执行。此后取数次数还剩四次,取出02,结
23、果判断,可以得出程序不会顺序执行乘法,而是跳转到L2执行INC,DEC,然后判断到非负数之后,继续跳转到L1执行。此后取数次数还剩3次,取出三个FE,结果判断,可以得出程序会顺序执行乘法,加法。经过五次取数后,最终结果如下所示:可以看出,此时R0中存放的10就是结果,数据输出端OUTBUS输出的就是R0内的数据。输入数据是:FE 02 FE FE FE 运算后结果是10。这是正确的。结果分析:输入五个数:00FE,0102,02FE,03FE,04FE输出:10H输入的五个数中负数都为:FE,二进制原码分别为10000010,转化十进制为-2,则(-2)2 + (-2)2 +(-2)2 + (
24、-2)2 = 16,用十六进制为10H,所以结果正确。5 故障现象与故障分析在做这次课设时遇到了挺多的问题,但最终通过查阅资料,还有请教老师,同学及自己的努力下,我终于完成了课设。通过对问题的解决,增长了我解决问题的能力。下面就把所遇到的问题来个简单的总结:首先,在写汇编语言程序时,遇到的问题是无法实现将输入数据依次存放在RAM的某一连续的存储区域内,后来通过看老师给的PPT资料,以及请教老师和同学,终于完成了汇编语言程序,能将五个数据存入到存储区域内。其次,碰到的一个比较头痛的问题是,画顶层电路图时候,明明画的图没错,可是编译时却一直报错。一开始不知道,经过了无数次痛苦的挣扎后才发现,原来单
25、根线是不能和总线有重合的。原因就是这个,单根线是不能和总线有重合的。如果不小心犯了这个意外的错误,那检查错误的时候就有得心烦了。然后,遇到的问题就是在取数时,不管取出的数是不是负数,均不执行乘法和加法指令,都直接跳转到L2。最终的结果均为00。经分析认为是TEST指令存在着问题,认真的核对机器语言的指令代码和微程序指令代码中的TEST指令后,仍未发现错误。直到检查算术逻辑运算单元的程序时,才发现自己设计的TEST指令是用到源寄存器Rs的,源寄存器Rs的内容应送往ALU的X总线的,然而在设计ALU的程序中却把源寄存器Rs的内容应送往ALU的Y总线了,所以导致TEST指令没有实现测试R3的符号位的
26、功能。所以未执行乘法和加法指令,没有实现求负数的平方和功能。6 体会在这次课程设计过程中,我虽然碰到了许许多多的问题,但最后还是顺利的做完课设了。让我深深尝到了那种通过自己努力学习换来的可喜的成果的滋味。碰到的问题有些是因为自己粗心大意,有的是因为自己对所学知识理解不够透彻。但在遇到问题后,我认真地看了几次课本和课设的PPT,和请教了老师,同学,终于真正的搞懂了整个流程,也终于把一个个问题解决了。其中遇到一个隐蔽的错误,我的汇编程序设计出现错误,导致很多地方都出现了问题。对于这样的故障,可以通过仿真图来看,对照自己设计的汇编程序,一步步的执行,最终就可以发现问题。通过这次实验课程,使我对计算机
27、的工作原理和流程有了更加深刻的认识,同时也巩固了我以前所学的汇编语言。这次实验课程让我真正理解硬件的工作原理,不过在整个过程中,仿真和调试花了最多的时间。根据波形图,找出了出现错误的地方,最初调试时,由于对调试方法不太熟悉,不知道该从何处下手。后来,通过跟同学讨论,慢慢掌握了调试的基本方法。随着一个个错误的解决,自己也慢慢的积累了一套调试程序的方法:1、检查一下电路图;2、检查汇编程序是否正确;3、汇编的机器代码是否与汇编程序对应;4、微命令的控制信号对不对。按照这个顺序下来,基本上都能把问题解决。本次课程设计让我对计算机的运作有了更深刻的认识。但让我体会最深刻的是:很多事情看着很难,但只要静
28、下心来,好好的学习,明白了原理之后,那些曾经感觉很难很难的事情其实都是很简单的。最重要的是要有一颗不畏惧困难的心,只要肯做,没有做不好的事。很多事情之所以办不好就是因为畏惧困难。自己以后要不畏惧困难,只要好好做,好好学,相信自己就能做好的。7 软件清单7.1 算术逻辑运算单元ALU 算术逻辑运算单元可执行满足题目要求的六种运算,即ADD、INC、DEC、MUL、TEST、输出Y运算。ALU的六种运算受S2、S1、S0控制,具体见表7-1。ALU单元如图7-1,ALU单元对应的VHDL源程序如程序1所示。S2S1S0功能000X+Y,锁存CF和SF010Y+1,锁存CF和SF011Y-1,锁存C
29、F和SF100X*Y,锁存CF和SF101 TEST,锁存CF和SF110Y 表7-1 ALU单元的功能表 图7-1 ALU单元程序1:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_SIGNED.all;ENTITY ALU ISPORT( X: IN STD_LOGIC_VECTOR(7 DOWNTO 0); Y: IN STD_LOGIC_VECTOR(7 DOWNTO 0); S2,S1,S0: IN STD_LOGIC; ALUOUT: OUT STD_L
30、OGIC_VECTOR(7 DOWNTO 0) ; CF,SF: OUT STD_LOGIC );END ALU;ARCHITECTURE A OF ALU ISSIGNAL AA,BB,TEMP:STD_LOGIC_VECTOR(8 DOWNTO 0);SIGNAL TEMP1:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESSBEGIN IF(S2='0' AND S1='0' AND S0='0') THEN-ADD AA<='0'&X; BB<='0'&
31、amp;Y; TEMP<=AA+BB;ALUOUT<=TEMP(7 DOWNTO 0); CF<=TEMP(8); SF<=TEMP(7); ELSIF(S2='0' AND S1='1' AND S0='0') THEN -INC AA<='0'&Y; TEMP<=AA+1; ALUOUT<=TEMP(7 DOWNTO 0); CF<=TEMP(8); SF<=TEMP(7); ELSIF(S2='0' AND S1='1' AND S
32、0='1') THEN -DEC AA<='0'&Y; TEMP<=AA-1; ALUOUT<=TEMP(7 DOWNTO 0); CF<=TEMP(8); SF<=TEMP(7); ELSIF(S2='1' AND S1='0' AND S0='0') THEN -MUL AA<='0'&X; BB<='0'&Y; TEMP<=AA*BB;ALUOUT<=TEMP(7 DOWNTO 0); CF<=
33、TEMP(8); SF<=TEMP(7); ELSIF(S2='1' AND S1='0' AND S0='1') THEN -TEST TEMP1<=X; ALUOUT<=TEMP1(7 DOWNTO 0); CF<='0' SF<=TEMP1(7); ELSIF(S2='1' AND S1='1' AND S0='0') THEN -Rd->BUS ALUOUT<=Y;ELSE ALUOUT<="00000000"
34、; ; CF<='0' SF<='0' END IF; END PROCESS;END A;7.2 状态条件寄存器单元状态条件寄存器单元如图7-2所示,LDPSW上边沿有效。状态条件寄存器单元对应的VHDL源程序如程序2所示。 图7-2 状态条件寄存器程序2:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY PSW ISPORT( C,S,LDPSW: IN STD_LOGIC; CF,SF: OUT STD_LOGIC );END PSW;ARCHITECTURE A OF PSW ISBEGIN PR
35、OCESS(LDPSW) BEGIN IF(LDPSW'EVENT AND LDPSW='1') THEN CF<=C; SF<=S; END IF; END PROCESS;END A;7.3 通用寄存器单元通用寄存器单元如图7-3所示,通用寄存器单元对应的VHDL源程序如程序3所示。 图7-3 通用寄存器单元程序3:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LS273 ISPORT( D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK: IN STD_LOGIC; Q: O
36、UT STD_LOGIC_VECTOR(7 DOWNTO 0) );END LS273;ARCHITECTURE A OF LS273 ISBEGIN PROCESS(CLK) BEGIN IF(CLK'EVENT AND CLK='1') THEN Q<=D; END IF; END PROCESS;END A;7.4 1:2分配器单元1:2分配器单元如图7-4所示,暂存寄存器单元对应的VHDL源程序如程序4所示。: 图7-4 1:2分配器单元程序4:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FEN2 ISP
37、ORT(LED_B:IN STD_LOGIC;DBUS:IN STD_LOGIC_VECTOR(7 DOWNTO 0);FENOUT,OUTBUS:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END FEN2;ARCHITECTURE A OF FEN2 ISBEGIN PROCESS BEGIN IF(LED_B='0') THEN OUTBUS<=DBUS; ELSE FENOUT<=DBUS; END IF; END PROCESS;END A;7.5 3选1数据选择单元本系统中共用到两个3选1数据选择器。7.5.1 3选1数据选择器MU
38、X3_13选1数据选择器MUX3_1如图7-5所示,对应的VHDL源程序如程序5所示。 图7-5 3选1数据选择器MUX3_1程序5:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX3_1 ISPORT(INBUS,RAMOUT,FEN2OUT:IN STD_LOGIC_VECTOR(7 DOWNTO 0);SW_B,RAM_B:IN STD_LOGIC;DBUS:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END MUX3_1;ARCHITECTURE A OF MUX3_1 ISBEGIN PROCESS BEGI
39、N IF(SW_B='0') THEN DBUS<=INBUS; ELSIF(RAM_B='0')THEN DBUS<=RAMOUT; ELSEDBUS<=FEN2OUT;END IF; END PROCESS;END A;7.5.2 3选1数据选择器MUX3_23选1数据选择器MUX3_2如图7-6所示,对应的VHDL源程序如程序6所示。 图7-6 3选1数据选择器MUX3_2程序6:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX3_2 ISPORT(ALUOUT,RSOUT,AOUT:
40、IN STD_LOGIC_VECTOR(7 DOWNTO 0);ALU_B,RS_B,ADDR_B:IN STD_LOGIC;DBUS:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END MUX3_2;ARCHITECTURE A OF MUX3_2 ISBEGIN PROCESS BEGIN IF(ALU_B='0') THEN DBUS<=ALUOUT; ELSIF(RS_B='0') THEN DBUS<=RSOUT; ELSIF(ADDR_B='0') THENDBUS<=AOUT; ELSEDBU
41、S<="00000000" END IF; END PROCESS;END A;7.6 4选1数据选择器单元本系统中共用到两个4选1数据选择器。7.6.1 4选1数据选择器MUX4_14选1数据选择器MUX4_1如图7-7所示,对应的VHDL源程序如程序7所示。图7-7 4选1数据选择器MUX4_1程序7:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX4_1 ISPORT(R0,R1,R2,R3:IN STD_LOGIC_VECTOR(7 DOWNTO 0);X:OUT STD_LOGIC_VECTOR(7 DO
42、WNTO 0);I11,I10:IN STD_LOGIC);END MUX4_1;ARCHITECTURE A OF MUX4_1 ISBEGIN PROCESS BEGIN IF(I11='0' AND I10='0') THEN X<=R0; ELSIF(I11='0' AND I10='1')THEN X<=R1; ELSIF(I11='1' AND I10='0')THEN X<=R2; ELSEX<=R3; END IF; END PROCESS;END A;7.6
43、.1 4选1数据选择器MUX4_24选1数据选择器MUX4_2如图7-8所示,对应的VHDL源程序如程序8所示。 图7-8 4选1数据选择器MUX4_2程序8:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX4_2 ISPORT(R0,R1,R2,R3:IN STD_LOGIC_VECTOR(7 DOWNTO 0);Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);I9,I8:IN STD_LOGIC);END MUX4_2;ARCHITECTURE A OF MUX4_2 ISBEGIN PROCESS BEGIN I
44、F(I9='0' AND I8='0') THEN Y<=R0; ELSIF(I9='0' AND I8='1')THEN Y<=R1; ELSIF(I9='1' AND I8='0')THEN Y<=R2; ELSEY<=R3; END IF; END PROCESS;END A;7.7 程序计数器单元程序计数器单元如图7-9所示,它在控制信号的控制下具有清零、置计数器初值和加1的功能,起作用是保证程序的顺序执行。程序计数器的功能表如表7-9所示,其对应的VHDL源程序如程
45、序9所示。 图7-9 程序计数器PCCLRLOADLDPC功能0XX将PC清010BUSPC110不装入,也不计数11PC+1表7-9 程序计数器PC的功能表程序9:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PC ISPORT( LOAD,LDPC,CLR: IN STD_LOGIC; D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); Q: OUT STD_LOGIC_VECTOR(7 DOWNTO
46、 0) );END PC;ARCHITECTURE A OF PC ISSIGNAL QOUT: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESS(LDPC,CLR,LOAD) BEGIN IF(CLR='0') THEN QOUT<="00000000" ELSIF(LDPC'EVENT AND LDPC='1') THEN IF(LOAD='0') THEN QOUT<=D; -BUS->PC ELSE QOUT<=QOUT+1; -PC+1 END IF
47、; END IF; END PROCESS; Q<=QOUT;END A;7.8 地址寄存器单元地址寄存器单元由一片8位的LS273组成,如图7-10所示,对应的VHDL源程序如程序10所示。 图7-10 地址寄存器单元程序10:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LS273 ISPORT( D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK: IN STD_LOGIC; Q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END LS273; ARCHITECTURE A OF LS273 ISBEGIN PROCESS(CLK) BEGIN IF(CLK'EVENT AND CLK='1') THEN Q<=D; END IF; END PROCESS;END A;7.9 ROM存储器单元 ROM存储器单元如图7-11所示,对应的VHDL源程序如程序11所示。 图7-11 ROM存储器单元程序11:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国石棉制品行业发展趋势及投资战略研究报告
- 厦门工学院《供应链管理实验》2023-2024学年第二学期期末试卷
- 温州理工学院《居住建筑设计原理》2023-2024学年第二学期期末试卷
- 贵州城市职业学院《化工原理实验一》2023-2024学年第二学期期末试卷
- 南京工业职业技术大学《儿重发育保健护理》2023-2024学年第二学期期末试卷
- 河南质量工程职业学院《数字媒体后期制作》2023-2024学年第二学期期末试卷
- 山东现代学院《宝石合成与优化》2023-2024学年第二学期期末试卷
- 河南应用技术职业学院《建筑风格史》2023-2024学年第二学期期末试卷
- 四川音乐学院《ED器件与应用技术》2023-2024学年第二学期期末试卷
- 聊城大学《幼儿心理学》2023-2024学年第二学期期末试卷
- GB/T 43700-2024滑雪场所的运行和管理规范
- 鲁迅《社戏》原文+赏析
- 部编版道德与法治三年级下册教案全册
- 幼儿教师之《幼儿游戏与指导》考试题库(通用版)
- 中国建设银行养老金融模式发展问题研究
- 关于布郎芬布伦纳发展心理学生态系统理论
- 我们身边的法律故事课件
- 执行律师服务方案
- GB 24544-2023坠落防护速差自控器
- 2023年11月上海市教育委员会教育技术装备中心公开招考3名工作人员笔试历年高频考点(难、易错点荟萃)附带答案详解
- 煤矿违章行为及预防
评论
0/150
提交评论