还剩28页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
长沙理工大学《计算机组成原理》课程设计报告简单微处理器的设计李江江学院计算机与通信工程专业计算机科学与技术班级085010502学号200550080225学生姓名李江江指导教师肖晓丽课程成绩完成日期2008年1月18日课程设计任务书计算机与通信工程学院计算机科学与技术专业课程名称计算机组成原理课程设计时间2007~2008学年第一学期19~20周学生姓名李江江指导老师肖晓丽题目简单微处理器的设计主要内容本课程设计要求采用EDA技术设计简单微处理器系统设计要求采用自顶向下的设计方法它要求完成数的输入,数的比较,数的交换和结果输出四部分系统实现采用硬件描述语言VHDL把系统电路按模块化方式进行设计,然后进行编程、时序仿真并分析要求
(1)通过对相应文献的收集、分析以及总结,给出相应课题的背景、意义及现状研究分析
(2)通过课题设计,掌握计算机组成原理的分析方法和设计方法
(3)学按要求编写课程设计报告书,能正确阐述设计和实验结果
(4)学生应抱着严谨认真的态度积极投入到课程设计过程中,认真查阅相应文献以及实现,给出个人分析、设计以及实现应当提交的文件
(1)课程设计报告
(2)课程设计附件(主要是源程序)课程设计成绩评定学院计算机通信工程专业计算机科学与技术班级计算机05-02班学号200550080225学生姓名李江江指导教师肖晓丽课程成绩完成日期2008年1月18日指导教师对学生在课程设计中的评价评分项目优良中及格不及格课程设计中的创造性成果学生掌握课程内容的程度课程设计完成情况课程设计动手能力文字表达学习态度规范要求课程设计论文的质量指导教师对课程设计的评定意见综合成绩指导教师签字年月日简单微处理器的设计学生李江江指导老师肖晓丽摘要本课程设计采用EDA技术设计简单微处理器系统设计采用自顶向下的设计方法它由数的输入,数的比较,数的交换和结果输出四部分组成系统实现采用硬件描述语言VHDL把系统电路按模块化方式进行设计,然后进行编程、时序仿真并分析系统结构简单,使用方便,功能齐全,精度高,具有一定的应用价值关键词处理器;输入;比较;交换目录TOC\o1-3\h\z\u1引言
11.1课题设计的背景、目的
11.2课程设计的内容12EDA、VHDL简介
32.1EDA简介
32.2VHDL简介3VHDL语言的特点3VHDL的设计流程43简单微处理器的设计过程
53.1设计规划
53.2各模块设计及相应程序54系统仿真
91.数的输入.92数的比较93交换两个数104结果输出(从小到大).10结束语11致谢12参考文献13附录141引言随着社会的发展,科学技术也在不断的进步特别是计算机产业,可以说是日新月异,而处理器,作为计算机中的一个重要部分,其性能从很大程度上决定了计算机的性能本设计介绍的简单微处理器,要求具有以下验证程序所要求的功能输入包含10个整数(无符号数)的数组M,按从小到大的顺序输出这10个数
1.1课题设计的背景、目的微处理器技术的发展是与微电子技术即大规模集成电路技术的发展分不开的微电子技术以每18个月集成度提高一倍的速度迅速发展20世纪80年代初,主要是16位微处理器8086/80881985年推出了80386微处理器,完成了16位体系结构向32位体系结构的转变1989年80486出现了80486的设计目标是提高指令执行速度和支持多处理器系统80486在芯片内部增加一个8KB的高速缓冲存储器cache,还增加了相当于80387的浮点部件FPU,在基本指令的实现上,采用硬布线逻辑而不是微程序技术1993年3月,Intel公司推出了第一代“奔腾”微处理器Pentium,微处理器技术发展进入了一个新的阶段到目前为止,“奔腾”已有四代产品“奔腾”的设计思想是把如何提高微处理器内部指令执行的并行性作为主导指令执行的并行性越好,微处理器的性能就越高本次设计的目的就是了解并掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,学习VHDL基本单元电路的综合设计应用通过对实用电子称的设计,巩固和综合运用所学课程,理论联系实际,提高IC设计能力,提高分析、解决计算机技术实际问题的独立工作能力通过课程设计深入理解VHDL语言的精髓,达到课程设计的目标
1.2课程设计的内容本设计主要介绍的设计一台简单微处理器,要求具有以下验证程序所要求的功能输入包含10个整数(无符号数)的数组M,按从小到大的顺序输出这10个数1程序开始及输入10个数据2数的比较3交换两个数4结果输出(从小到大)2EDA、VHDL简介
2.1EDA简介EDA是ElectronicDesignAutomation电子设计自动化的缩写,EDA技术是20世纪90年代初以来迅速发展起来的现代电子工程领域的一门新技术它可以编程逻辑器件(PLD)为载体,以计算机为工作平台,以EDA工具软件为开发环境,以硬件描述语言(HDL)作为电子系统功能描述方式,以电子系统设计为应用方向的电子产品自动化设计过程
2.2VHDL简介VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage诞生于1982年1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务
2.3VHDL语言的特点VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分及端口和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体这种将设计实体分成内外部分的概念是VHDL系统设计的基本点应用VHDL进行工程设计的优点是多方面的
(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现
(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表
(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计
2.4VHDL的设计流程它主要包括以下几个步骤
1.设计规范的定义这个有点象系统的设计的总体规划,就是要明确这个系统有哪些设计要求,和你要想到达的目标
2.采用VHDL进行设计描述这部分包括设计规划和程序的编写设计规划主要包括设计方式的选择及是否进行模块划分设计方式一般包括直接设计,自顶向下和自底向下设计,这个和其他软件语言差不多最重要还是模块划分,这个和设计者的设计水平有很大关系完成规划设计后,就可以编写个模块的VHDL程序了,最后将各模块的VHDL程序综合起来就完成了整个设计的VHDL描述.
3.VHDL程序仿真这个过程和其他软件语言没什么区别
4.综合、优化和布局布线 综合指的是将设计描述转化成底层电路的表示形式,其结果是一个网表或者是一组逻辑方程;优化,这个主要是为了提高程序的执行效率及减少资源的利用;布局布线,指的是将逻辑关系转化成电路连接的方式
5.后仿真这个与VHDL程序仿真不同,这个不仅是对逻辑方面的验证,还要进行时序功能验证
6.器件编程3简单微处理器的设计过程
3.1设计规划计算器通过简单的数字键盘输入操作数,其中所键入的数据将被暂存在移位寄存器中,然后根据运算符执行产生不同的操作结果,所获得的运算结果再通过译码电路转移到七段显示器输出整个微处理器的工作原理图如图
3.11所示图
3.1微处理器的工作原理图
3.2各模块设计及相应程序本系统设计了10条指令IN1输入到目的寄存器,MOV(将一个数送入目的寄存器),MOV1(将源寄存器中的数据存储到目的寄存器所指向的地址单元),MOV2(将源寄存器所指向的地址单元中的数送入目的寄存器),OUT1输出,CMP(将目的寄存器和源寄存器所指向的地址单元中的数据进行比较),DEC(将目的寄存器中的数据自减一),INC(将目的寄存器中的数据自加一),JMP(无条件跳转),JB(小于跳转),下表列出了每条指令的格式、汇编符号和指令功能 表
3.2指令系统格式表 助记符号指令格式功 能IN1 Rd 1 0 0 0 × ×RdSW-RdMOV im Rd1 0 0 1 × ×Rdimim-RdMOV1 Rs [Rd]1 0 1 0 Rs RdRs-[Rd]MOV2 [Rs] Rd1 0 1 1 Rs Rd[Rs]-RdOUT1 Rd 1 1 0 0 Rs × ×(Rs)-LEDCMP Rs Rd1 1 0 1 Rs RdRs-Rd锁存CY和ZIDEC Rd 1 1 1 0 × ×RdRd-1-RdINC Rd 1 1 1 1 × ×RdRd+1-RdJMP addr 0 1 1 0××××addraddr-PCJB addr 0 1 1 1 ××××addr若小于,则addr-PC关键程序数的选择模块LIBRARYIEEE;USEIEEE.STD_LOGIC_
1164.ALL;ENTITYMUX5ISPORT R0_BR1_BR2_BR3_BALU_B:INSTD_LOGIC; R0_INR1_INR2_INR3_INALU_IN:INSTD_LOGIC_VECTOR7DOWNTO0; MUX5OUT:OUTSTD_LOGIC_VECTOR7DOWNTO0 ;ENDMUX5;ARCHITECTUREAOFMUX5ISBEGIN PROCESSALU_BR3_BR2_BR1_BR0_B BEGIN IFALU_B=1ANDR3_B=1ANDR2_B=1ANDR1_B=1ANDR0_B=0THEN MUX5OUT=R0_IN; ELSIFALU_B=1ANDR3_B=1ANDR2_B=1ANDR1_B=0ANDR0_B=1THEN MUX5OUT=R1_IN; ELSIFALU_B=1ANDR3_B=1ANDR2_B=0ANDR1_B=1ANDR0_B=1THEN MUX5OUT=R2_IN; ELSIFALU_B=1ANDR3_B=0ANDR2_B=1ANDR1_B=1ANDR0_B=1THEN MUX5OUT=R3_IN; ELSIFALU_B=0ANDR3_B=1ANDR2_B=1ANDR1_B=1ANDR0_B=1THEN MUX5OUT=ALU_IN; ELSEMUX5OUT=ALU_IN; ENDIF; ENDPROCESS;ENDA;LIBRARYIEEE;USEIEEE.STD_LOGIC_
1164.ALL; ENTITYFEN2ISPORT MUX5_IN:INSTD_LOGIC_VECTOR7DOWNTO0; LED_BWR:INSTD_LOGIC; OUT_MUX3OUT_PUT:OUTSTD_LOGIC_VECTOR7DOWNTO0 ;ENDFEN2; ARCHITECTUREAOFFEN2ISBEGIN PROCESSLED_B BEGIN IFLED_B=0ANDWR=0THEN OUT_PUT=MUX5_IN; OUT_MUX3=00000000; ELSE OUT_MUX3=MUX5_IN; ENDIF; ENDPROCESS;ENDA;LIBRARYIEEE;USEIEEE.STD_LOGIC_
1164.ALL;ENTITYMUX3ISPORT SW_BCS:INSTD_LOGIC; FEN2_INMUX2_2INSW_IN:INSTD_LOGIC_VECTOR7DOWNTO0; MUX3OUT:OUTSTD_LOGIC_VECTOR7DOWNTO0 ;ENDMUX3;ARCHITECTUREAOFMUX3ISBEGINPROCESSSW_BCS BEGIN IFSW_B=0ANDCS=1THEN MUX3OUT=SW_IN; ELSIFSW_B=1ANDCS=0THEN MUX3OUT=MUX2_2IN; ELSIFSW_B=0ANDCS=0THEN MUX3OUT=FEN2_IN; ELSE MUX3OUT=11101110; ENDIF; ENDPROCESS;ENDA;4系统仿真
4.1数的输入以下仿真波形图的测试输入为34,15,25,92,17,06,83,68,72,87程序开始及输入10个数据.图
4.1中的R0控制循环R1与用自增R2用于保存输入的数并送到与R1对应地址的RAM中.图
4.1程序开始及输入
4.2数的比较如图
4.2所示,R0存放外循环的比较次数,R1存放内循环的指针R2存放每次比较的大数,3存放与R2比较的下一个数如果R3R2则跳转到交换,否则顺序执行图
4.2数的比较
4.3交换两个数如图
4.3,由于R3种的数25大于R2中的数15,则进行交换使R2每次存入最大的值后,R3继续读入R1地址的值继续进行比较图
4.3交换两个数
4.4结果输出图
4.4中的R0控制循环R1与用自增R2用于输出寄存器.结果从QD输出图中刚好从最小的数06开始输出图
4.4结果输出 结束语我在老师的细心指导和同学们的耐心帮助之下成功完成了本次实验,并能得到预期的实验结果在这段时间内,我努力学习了计算机系统结构,VHDL等相关的各项知识,也查阅不少资料,并能够将课堂上所学的知识运用于实际的设计中,能够很好的进行理论联系实际进行开发通过解决这次设计和设计中遇到的问题,也积累了一定的经验对以后从事集成电路设计工作会有一定的帮助在应用VHDL的过程中让我真正领会到了其并行运行与其他软件(C语言)顺序执行的差别及其在电路设计上的优越性致谢本课程设计在选题和设计过程中得到了肖晓丽老师的悉心指导,肖老师多次询问课程设计进程,并多次指导我对课程设计进行修改,帮助我完善了该课程设计在此对肖老师表示衷心的感谢还要感谢寝室的同学们,谢谢你们对我技术和精神上的帮助,谢谢你们参考文献
[1]黄仁欣.EDA技术实用教程.北京:清华大学出版社2006
[2]黄志鹏付丽琴.可编程逻辑器件开发技术MAX+piusⅡ.北京:国防工业出版社2005[3]潘松.VHDL实用教程[M].成都:电子科技大学出版社2000
[4]谭会生.EDA技术基础.长沙:湖南大学出版社2004
[5]杨刚,龙海燕.现代电子技术—VHDL与数字系统设计.北京.电子工业出版社,2004附录程序清单1ALU子模块LIBRARYIEEE;USEIEEE.STD_LOGIC_
1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYALUISPORT ACDR:INSTD_LOGIC_VECTOR7DOWNTO0; S1S0:INSTD_LOGIC; BCDOUT:OUTSTD_LOGIC_VECTOR7DOWNTO0; CYZI: OUTSTD_LOGIC ;ENDALU;ARCHITECTUREAOFALUISSIGNALAABBTEMP:STD_LOGIC_VECTOR8DOWNTO0;BEGIN PROCESSS1S0 BEGIN IFS1=0ANDS0=0THEN BCDOUT=AC+DR; AA=0AC; BB=0DR; TEMP=AA+BB; CY=TEMP8; IFTEMP=100000000THEN ZI=1; ELSE ZI=0; ENDIF; ELSIFS1=0ANDS0=1THEN BCDOUT=AC-DR; AA=0AC; BB=0DR; TEMP=AA-BB; CY=TEMP8; IFTEMP=000000000THEN ZI=1; ELSE ZI=0; ENDIF; ELSIFS1=1ANDS0=0THEN AA=0AC; TEMP=AA+1; BCDOUT=TEMP7DOWNTO0; CY=TEMP8; IFTEMP=100000000THEN ZI=1; ELSE ZI=0; ENDIF; ELSIFS1=1ANDS0=1THEN AA=0AC; TEMP=AA-1; BCDOUT=TEMP7DOWNTO0; CY=TEMP8; IFTEMP=000000000THEN ZI=1; ELSE ZI=0; ENDIF; ELSE BCDOUT=00000000; CY=0; ZI=0; ENDIF; ENDPROCESS;ENDA;2状态条件寄存器子模块LIBRARYIEEE;USEIEEE.STD_LOGIC_
1164.ALL; ENTITYLS74ISPORT LDFR:INSTD_LOGIC; CYZI:INSTD_LOGIC; FCFZ:OUTSTD_LOGIC ;ENDLS74; ARCHITECTUREAOFLS74ISBEGIN PROCESSLDFR BEGIN IFLDFREVENTANDLDFR=1THEN FC=CY; FZ=ZI; ENDIF; ENDPROCESS;ENDA;3时序产生器子模块LIBRARYIEEE;USEIEEE.STD_LOGIC_
1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYCOUNTERISPORT QCLR:INSTD_LOGIC; T2T3T4:OUTSTD_LOGIC ;ENDCOUNTER;ARCHITECTUREAOFCOUNTERISSIGNALX:STD_LOGIC_VECTOR1DOWNTO0;BEGIN PROCESSQCLR BEGIN IFCLR=0THEN T2=0; T3=0; T4=0; X=00; ELSIFQEVENTANDQ=1THEN X=X+1; T2=NOTX1ANDX0; T3=X1ANDNOTX0; T4=X1ANDX0; ENDIF; ENDPROCESS;ENDA;
4.程序计数器子模块LIBRARYIEEE;USEIEEE.STD_LOGIC_
1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYPCISPORT LOADLDPCCLR:INSTD_LOGIC; BUS_IN:INSTD_LOGIC_VECTOR7DOWNTO0; PCOUT:OUTSTD_LOGIC_VECTOR7DOWNTO0 ;ENDPC; ARCHITECTUREAOFPCISSIGNALQOUT:STD_LOGIC_VECTOR7DOWNTO0;BEGIN PROCESSLDPCCLRLOAD BEGIN IFCLR=0 THEN QOUT=00000000; ELSIFLDPCEVENTANDLDPC=1THEN IFLOAD=0THEN QOUT=BUS_IN; --BUS-PC ELSE QOUT=QOUT+1; --PC+1 ENDIF; ENDIF; ENDPROCESS; PCOUT=QOUT;ENDA;5ROM子模块LIBRARYIEEE;USEIEEE.STD_LOGIC_
1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYROM16ISPORT ROMOUT:OUTSTD_LOGIC_VECTOR7DOWNTO0; ADDR:INSTD_LOGIC_VECTOR7DOWNTO0; RECS_I:INSTD_LOGIC;ENDROM16;ARCHITECTUREAOFROM16ISBEGIN PROCESSRECS_I BEGIN IFRE=0ANDCS_I=0THEN CASEADDRIS WHEN00000000=ROMOUT=10010000; --MOV 0AH R0 WHEN00000001=ROMOUT=00001010; WHEN00000010=ROMOUT=10010001; --MOV 00H R1 WHEN00000011=ROMOUT=00000000; WHEN00000100=ROMOUT=10000010; --L1: IN1 R2 WHEN00000101=ROMOUT=10101001; --MOV1 R2 [R1] WHEN00000110=ROMOUT=11110001; --INC R1 WHEN00000111=ROMOUT=11010100; --CMP R1 RO WHEN00001000=ROMOUT=01110000; --JB L1 WHEN00001001=ROMOUT=00000100; WHEN00001010=ROMOUT=10010000; --MOV 09H R0 WHEN00001011=ROMOUT=00001001; WHEN00001100=ROMOUT=10010001; --MOV 00H R1 WHEN00001101=ROMOUT=00000000; WHEN00001110=ROMOUT=10110110; --L2: MOV2 [R1] R2 WHEN00001111=ROMOUT=11110001; --INC R1 WHEN00010000=ROMOUT=11010001; --CMP R0 R1 WHEN00010001=ROMOUT=01110000; --JB L4 WHEN00010010=ROMOUT=00011111; WHEN00010011=ROMOUT=10110111; --MOV2 [R1] R3 WHEN00010100=ROMOUT=11011110; --CMP R3 R2 WHEN00010101=ROMOUT=01110000; --JB L3 WHEN00010110=ROMOUT=00011001; WHEN00010111=ROMOUT=01100000; --JMP L2 WHEN00011000=ROMOUT=00001110; WHEN00011001=ROMOUT=10101001; --L3: MOV1 R2 [R1] WHEN00011010=ROMOUT=11100001; --DEC R1 WHEN00011011=ROMOUT=10101101; --MOV1 R3 [R1] WHEN00011100=ROMOUT=11110001; --INC R1 WHEN00011101=ROMOUT=01100000; --JMP L2 WHEN00011110=ROMOUT=00001110; WHEN00011111=ROMOUT=11100000; --L4DEC R0 WHEN00100000=ROMOUT=10010001; --MOV 00H R1 WHEN00100001=ROMOUT=00000000; WHEN00100010=ROMOUT=11010100; --CMP R1 R0 WHEN00100011=ROMOUT=01110000; --JB L2 WHEN00100100=ROMOUT=00001110; WHEN00100101=ROMOUT=10010000; --MOV 0AH R0 WHEN00100110=ROMOUT=00001010; WHEN00100111=ROMOUT=10010001; --MOV 00H R1 WHEN00101000=ROMOUT=00000000; WHEN00101001=ROMOUT=10110110; --L5 MOV2 [R1] R2 WHEN00101010=ROMOUT=11110001; --INC R1 WHEN00101011=ROMOUT=11001000; --OUT1 R2 WHEN00101100=ROMOUT=11010100; --CMP R1 R0 WHEN00101101=ROMOUT=01110000; --JB L5 WHEN00101110=ROMOUT=00101001; WHEN00101111=ROMOUT=11001000; --L6 OUT1 R2 WHEN00110000=ROMOUT=01100000; --JMP L6 WHEN00110001=ROMOUT=00101111; WHENOTHERS =NULL; ENDCASE; ENDIF; ENDPROCESS;ENDA;
6.RAM子模块LIBRARYIEEE;USEIEEE.STD_LOGIC_
1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYRAMIS PORT WRCS:INSTD_LOGIC; DIN:INSTD_LOGIC_VECTOR7DOWNTO0; DOUT:OUTSTD_LOGIC_VECTOR7DOWNTO0; ADDR:INSTD_LOGIC_VECTOR7DOWNTO0 ;ENDRAMARCHITECTUREAOFRAMISTYPEMEMORYISARRAY0TO31OFSTD_LOGIC_VECTOR7DOWNTO0;BEGIN PROCESSCSWR VARIABLEMEM:MEMORY; BEGIN IFCS=0THEN IFWR=0THEN MEMCONV_INTEGERADDR4DOWNTO0:=DIN; ELSIFWR=1THEN DOUT=MEMCONV_INTEGERADDR4DOWNTO0; ENDIF; ENDIF; ENDPROCESS;ENDA;7选择对ROM或者RAM进行操作的二选一选择器子模块LIBRARYIEEE;USEIEEE.STD_LOGIC_
1164.ALL;ENTITYMUX2_2ISPORT R_R:INSTD_LOGIC; ROM_INRAM_IN:INSTD_LOGIC_VECTOR7DOWNTO0; MUX2_2OUT:OUTSTD_LOGIC_VECTOR7DOWNTO0 ;ENDMUX2_2;ARCHITECTUREAOFMUX2_2ISBEGIN PROCESSR_RROM_INRAM_IN BEGIN IFR_R=0THEN MUX2_2OUT=ROM_IN; ELSE MUX2_2OUT=RAM_IN; ENDIF; ENDPROCESS;ENDA;
8.五选一选择器子模块LIBRARYIEEE;USEIEEE.STD_LOGIC_
1164.ALL;ENTITYMUX5ISPORT R0_BR1_BR2_BR3_BALU_B:INSTD_LOGIC; R0_INR1_INR2_INR3_INALU_IN:INSTD_LOGIC_VECTOR7DOWNTO0; MUX5OUT:OUTSTD_LOGIC_VECTOR7DOWNTO0 ;ENDMUX5;ARCHITECTUREAOFMUX5ISBEGIN PROCESSALU_BR3_BR2_BR1_BR0_B BEGIN IFALU_B=1ANDR3_B=1ANDR2_B=1ANDR1_B=1ANDR0_B=0THEN MUX5OUT=R0_IN; ELSIFALU_B=1ANDR3_B=1ANDR2_B=1ANDR1_B=0ANDR0_B=1THEN MUX5OUT=R1_IN; ELSIFALU_B=1ANDR3_B=1ANDR2_B=0ANDR1_B=1ANDR0_B=1THEN MUX5OUT=R2_IN; ELSIFALU_B=1ANDR3_B=0ANDR2_B=1ANDR1_B=1ANDR0_B=1THEN MUX5OUT=R3_IN; ELSIFALU_B=0ANDR3_B=1ANDR2_B=1ANDR1_B=1ANDR0_B=1THEN MUX5OUT=ALU_IN; ELSEMUX5OUT=ALU_IN; ENDIF; ENDPROCESS;ENDA;
9.一分二分配器子模块源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_
1164.ALL; ENTITYFEN2ISPORT MUX5_IN:INSTD_LOGIC_VECTOR7DOWNTO0; LED_BWR:INSTD_LOGIC; OUT_MUX3OUT_PUT:OUTSTD_LOGIC_VECTOR7DOWNTO0 ;ENDFEN2; ARCHITECTUREAOFFEN2ISBEGIN PROCESSLED_B BEGIN IFLED_B=0ANDWR=0THEN OUT_PUT=MUX5_IN; OUT_MUX3=00000000; ELSE OUT_MUX3=MUX5_IN; ENDIF; ENDPROCESS;ENDA;
10.三选一选择器子模块LIBRARYIEEE;USEIEEE.STD_LOGIC_
1164.ALL;ENTITYMUX3ISPORT SW_BCS:INSTD_LOGIC; FEN2_INMUX2_2INSW_IN:INSTD_LOGIC_VECTOR7DOWNTO0; MUX3OUT:OUTSTD_LOGIC_VECTOR7DOWNTO0 ;ENDMUX3;ARCHITECTUREAOFMUX3ISBEGINPROCESSSW_BCS BEGIN IFSW_B=0ANDCS=1THEN MUX3OUT=SW_IN; ELSIFSW_B=1ANDCS=0THEN MUX3OUT=MUX2_2IN; ELSIFSW_B=0ANDCS=0THEN MUX3OUT=FEN2_IN; ELSE MUX3OUT=11101110; ENDIF; ENDPROCESS;ENDA;。