嵌入式的8位CISC模型机设计报告_第1页
嵌入式的8位CISC模型机设计报告_第2页
嵌入式的8位CISC模型机设计报告_第3页
嵌入式的8位CISC模型机设计报告_第4页
嵌入式的8位CISC模型机设计报告_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上韶 关 学 院课程设计说明书(论文)课程设计题目:嵌入式的8位CISC模型机设计学生姓名:学 号:院 系:计算机科学学院专业班级: 指导教师姓名及职称: 起止时间: 2011 年 10 月 2011 年 11 月 课程设计评分:目录一、 实验目的二、设计题目及要求三、设计方案:1.模型机的总体设计2. 微程序控制器的组成原理框图 3. 模型机机器指令格式和指令系统 4. 时序产生器的设计原理及时序波形图 5. 微程序流程图 6. 微程序控制器单元 7. 汇编语言源程序 8. 机器语言的源程序 四、设计的过程与步骤 五.模型机系统顶层电路图六模型机的时序仿真波形图七设计

2、总结八参考文献韶关学院课程设计任务书学生姓名专业班级09科学与技术2班学号指导教师姓名及职称设计地点信息418设计题目嵌入式的8位CISC本课程设计课题任务的内容和要求: 设计一台嵌入式的8位CISC模型计算机,并运行能完成一定功能的机器语言程序进行验证,程序功能可以是以下两个之一:² 求出1到任意一个整数N之间的所有奇数之和并输出显示,和为单字长。说明:N从开关输入,和从数码管输出,然后输出显示停止。对本课程设计工作任务及工作量的要求:课程设计完成工作任务内容如下:(1) 完成系统的总体设计,画出模型机数据通路框图。(2) 设计微程序控制器(CISC模型计算机)的逻辑结构图。(3)

3、 设计机器指令格式和指令系统。(4) 设计时序产生器电路。(5) 设计所有机器指令的微程序流程图(CISC模型计算机)(6) 设计操作控制单元。l 设计的是CISC模型计算机,设计微指令格式(建议采用全水平型微指令),并根据微程序流程图和微指令格式设计微指令代码表。根据微程序控制器的逻辑结构框图、微指令格式和微指令代码设计微程序控制器,包括地址转移逻辑电路、微地址寄存器、微命令寄存器和控制存储器。(7) 设计模型机的所有单元电路,并用VHDL语言(也可使用GDF文件图形描述文件)对模型机中的各个部件进行编程,并使之成为一个的整体,即形成顶层电路或顶层文件。(8) 由给出的题目和设计的指令系统编

4、写相应汇编语言源程序(验证程序)。(9) 根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其设计到模型机的ROM中。(10) 使用EDA软件MAX+plusII进行功能仿真,要保证其结果满足题目的要求(其中要利用MAX+plusII提供的波形编辑器,选择合适的输入/输出信号及中间信号进行调试)。(11) 选用给定的FPGA芯片EP1K30TQC144进行器件编程和时序仿真,并将顶层电路或顶层文件下载到专用的EDA实验平台GW48 EDA教学实验系统后进行操作演示。课程设计应完成的图纸:(1) 顶层设计的电路原理图;(2) 元件(模块)符号图;(3) 仿真波形图。进度安排:时间

5、为18学时,分散在9周进行,每周2学时。1、 第1-4周:EDA技术基础知识教学讲座;2、 第58周:MAX+PLUS基础实验,确定课程设计题目,进行资料收集和学习、设计方案确定、电路设计、程序设计与计算机仿真;3、第9周:编写课程设计实验报告。主要参考文献:1 陈智勇 等编. 计算机原理课程设计. 西安电子科技大学. 2006年6月2 潘松 黄继业编. EDA技术实用教程(第二版). 科学出版社 2005年2月3 罗克露 等编. 计算机组成原理. 电子工业出版社 2004年8月 4 江国强编. EDA技术习题与实验. 电子工业出版社 2005年1月 5 彭玄璋编基于EDA技术的组成原理课程设

6、计实验指导书(自编教材) 2010年3月院系(或教研室)审核意见:审核人签名及系公章: 年 月 日任务下达人(签字) 年 月 日任务接受人(签字)年 月 日备注:1、本任务书由指导教师填写相关栏目,经系审核同意后,交学生根据要求完成设计任务。 2、本任务书须与学生的课程设计说明书(或论文)一并装订存档。 嵌入式的8位CISC模型机设计一、 实验目的:1. 通过课程设计加深对计算机各功能部件的理解;掌握数据信息流和控制信息流的流动和实现过程,建立起整机概念;培养设计、开发和调试计算机的能力。 2. 提高使用EDA工具软件和可编程器件芯片的基本技能。 3. 培养科学研究的独立工作能力,取得工程设计

7、与组装调试的实践和经验。 二、设计题目及要求: 设计一台8位的CISC模型机,要求具有以下验证程序所要求的功能: 求出1到任意一个整数N之间的所有奇数之和并输出显示,和单字节长。说明:N从开关输入,和数码管输出,然后输出显示停止。三、设计方案:1.模型机的总体设计 模型机的总体设计的内容包括确定各种部件的设置以及它们之间的数据通路结构。CISC模型机由CISC微处理器、地址寄存器AR、ROM和RAM存储器等组成。微处理器由算术逻辑运算单元ALU、状态条件寄存器、累加器AC、数据暂存器DR、通用寄存器R0R2、程序计数器PC、指令寄存器IR、操作控制器和时序产生器组成。CISC模型机的操作控制器

8、采用微程序控制器。根据模型机功能要求,画出如图1所示模型机数据通路框图。 图1 模型机数据通路框图2. 微程序控制器的组成原理框图 微程序控制器组成原理框图如图2所示。它主要由控制器、微指令寄存器和地址转移逻辑电路三大部分组成,其中微指令寄存器分为微地址寄存器和微命令寄存器两部分。 图2 微程序控制器组成原理框图 3. 模型机机器指令格式和指令系统 CISC模型机的指令系统采用复杂的指令格式、多种指令字长度和多种寻址方式,但指令功能强大,单条指令的执行速度较慢。为了完成题目所要求的功能,模型机的指令系统共设计了8条不同的功能指令。指令字长度有单字长(1个字节)和双字长(2个字节)两种;寻址方式

9、有三种,分别是寄存器寻址、直接寻址和立即寻址。这8条指令是IN1(输入),MOV(将一个数送入寄存器),CMP(比较),JB(小于跳转),ADD(两数相加),INC(自增1),JMP(无条件跳转),OUT1(输出)。 下面分别介绍这些指令的格式: (1)、I/O指令输入(IN1)采用单字节指令,其格式如下: 输入(OUT1)采用单字节指令,其格式如下: 说明:RS 为源寄存器, RD为目的寄存器。(2)、转移指令条件转移指令(JB)和无条件转移指令(JMP)采用双字节指令,其格式如下: “addr”中的值就是要转移的地址值。 (3)、比较指令和相加指令比较(CMP)指令和相加指令(ADD)采用

10、单字节指令,其格式如下: (4)、MOV指令MOV指令采用双字节指令,其格式如下: 说明:“data”为立即数。 (5)、自增指令自增1指令(INC)指令采用单字节指令,其格式如下: 以下是对Rs和Rd的规定: 模型机规定数据的表示采用定点整数补码表示,单字长为8位,其格式如下: 模型机的指令系统中共有8条基本指令,表1列出每条指令的助记符号、指令格式和功能。 表1 8条机器指令的助记符号、指令格式和功能 4. 时序产生器的设计原理及时序波形图 CISC微处理器的时钟信号Q和清除信号CLR由外部输入,节拍脉冲信号Ti由时序产生器产生。图4-14描述了节拍脉冲信号与外部时钟信号、清除信号的时序关

11、系。 由图3可以看出,节拍脉冲信号T1、T2、T3、T4实际上是以Q为时钟输入信号的计数状态经过译码器译码后生成的,因此可写出节拍脉冲信号的逻辑表达式,并用VHDL语言实现之,然后将它创建为一个元件符号,供顶层电路调用。 图3 T1、T2、T3、T4与CLR、Q之间的时序关系图 如果系统的时钟控制信号(即工作脉冲P)是在T1、T2、T3或T4的中间产生,且上升沿有效,则它产生方法是:先将Q取反,再和节拍脉冲信号Ti相“与”得到。如图4所示。图4 时钟控制信号的形成方法 5. 微程序流程图 根据模型机的数据通路图(图1)以及所有指令在CISC模型机中的操作过程,画出所有机器指令的微程序流程图,如

12、图5所示。图中每个框为一个CPU周期(包含T1T4共4个节拍脉冲周期)对应于一条微指令。框中上面的十六进制数表示的是当前微指令在控制存储器中的微地址;框中下面的十六进制数表示的是当前微指令的后续微坡地。在编写微指令时,图中的菱形框从属于它上面的方框。 图5 CISC模型机中所有机器指令的微程序流程图 6. 微程序控制器单元 (1)、设计微指令格式和微指令代码表 CISC模型机系统使用的微指令采用全水平型微指令,字长25位,其中微指令字段17位,P字段2位,后续微地址6位。其格式如下: 微指令格式中的后继微地址从左到右依次为:üA5、üA4、üA3、üA2

13、、üA1、üA0; 由微指令格式和微程序流程图编写的微指令代码表如表2所示。 表2 微指令代码表 (2)、设计地址转移逻辑电路 地址转移逻辑电路是根据微程序流程图5中的菱形部分及多个分支微地址,利用微地址寄存器的异步置“1”端,实现微地址的多路转移。在图5中进行P(1)(高电平有效)测试时,根据指令的操作码I7I4强制修改后继微地址的低4位,在P(2)(高电平有效)测试时,根据借位标志FC和零标志FZ进行两路分支,并且都在T4内形成后继微指令的微地址。 由于微地址寄存器中的触发器异步置“1”端低电平有效,与üA4üA0对应的异步置“1”控制信号SE5SE

14、1的逻辑表达式为:(üA5的异步置“1”端SE6实际未使用): 7. 汇编语言源程序 算法思想为:采用R0寄存器存放从开关输入的任意一个整数,R1存放准备参加累加运算的奇数,R2存放累加的和,用一个循环程序实现如下: 功能IN1 R0 从开关输入任意一个整数nR0 MOV R1,1 将立即数1R1(R1用于存放参与运算的奇数) MOV R2,0 将立即数0R2 (R2用于存放累加和) L1:CMP R0,R1 将R0的整数n与R1的奇数进行比较,锁存CY和ZI JB L2 小于,则转到L2处执行 ADD R1,R2 否则,累加求和,并将R1的内容加2,形成下一个奇数 INC R1 I

15、NC R1 JMP L1 无条件跳转到L1处继续执行 L2: OUT R2 输出累加和 JMP L2 循环显示 8. 机器语言的源程序 根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其设计到模型机的ROM中去。与汇编语言源程序对应的机器语言源程序如下: 助记符 地址(十六进制) 机器代码 功能 IN1 R0 00 (SW)R0 MOV R1,1 01 1R1 02 MOV R2,0 03 0R2 04 L1:CMP R0,R1 05 (R0)-(R1),锁存CY和ZI JB L2 06 若小于,则L2PC 07 ADD R1,R2 08 (R1)+(R2)R2 INC R1

16、 09 (R1)+1R1 INC R1 0A (R1)+1R1 JMP L1 0B L1PC 0C L2: OUT R2 0D (R2)LED JMP L2 0E L2PC 0F 四、设计的过程与步骤 1、设计各单元电路 首先设计出模型机中所有的单元部件,可以使用VHDL语言文件(.vhd)或者电路图形描述文件(.gdf)对模型机中的各个部件进行设计,并使之成为可供系统调用的元件符号。 (1)、ALU单元 算术逻辑运算单元ALU可执行三种运算,即加、比较和加1运算。ALU的三种运算受S0、S1控制,具体如表3所示。 表3 算术逻辑运算单元ALU的功能表 -ALU的VHDL源程序ALU.vhd

17、LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.all; ENTITY ALU IS PORT( A: IN STD_LOGIC_VECTOR(7 DOWNTO 0); B: IN STD_LOGIC_VECTOR(7 DOWNTO 0); S1,S0: IN STD_LOGIC; BCDOUT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; CY,ZI: OUT STD_LOGIC ); END ALU; ARCHI

18、TECTURE A OF ALU IS SIGNAL AA,BB,TEMP:STD_LOGIC_VECTOR(8 DOWNTO 0); BEGIN PROCESS(S1,S0) BEGIN IF(S1='0' AND S0='0') THEN -ADD AA<='0'&A; BB<='0'&B; TEMP<=AA+BB; BCDOUT<=TEMP(7 DOWNTO 0); CY<=TEMP(8); IF (TEMP="") THEN ZI<='1

19、9; ELSE ZI<='0' END IF; ELSIF(S1='0' AND S0='1') THEN -CMP(SUB) BCDOUT<=A-B; IF(A<B) THEN CY<='1' ZI<='0' ELSIF(A=B) THEN CY<='0' ZI<='1' ELSE CY<='0' ZI<='0' END IF; ELSIF(S1='1' AND S0='0

20、') THEN -INC AA<='0'&A; TEMP<=A+1; BCDOUT<=TEMP(7 DOWNTO 0); CY<=TEMP(8); IF (TEMP="") THEN ZI<='1' ELSE ZI<='0' END IF; ELSE BCDOUT<="" ; CY<='0' ZI<='0' END IF; END PROCESS; END A; ALU单元文本设计实验操作方法提示: a.

21、在MAX+plusII的文本编辑方式下完成ALU部件的VHDL源程序编辑,用ALU.vhd为文件名存入工程目录(D :CISC)中。 b. 在MAX+plus II窗口下,选择FileProjectSet Project to Current File命令,将设计文件设置当前工程。然后执行MAX+plus II菜单下“Compiler”命令对设计文件进行编译, 检查设计文件中的错误。 c. 在MAX+plus II窗口下,执行“File”菜单中的“Create Default Symbol”命令,可为通过编译的文本设计文件创建一个元件符号,并保存在工程目录中。 ALU单元元件符号如图6所示:图

22、6 ALU单元元件符号 (2)、状态条件寄存器单元 状态条件寄存器用来在进行比较运算时锁存借位标志(FC/CY)和零标志(FZ/ZI),在进行条件转移时其内容作为判断的依据。状态条件寄存器单元元件符号如图7所示。 图7 状态条件寄存器单元元件符号 -状态条件寄存器的VHDL源程序LS74.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY LS74 IS PORT( LDFR: IN STD_LOGIC; CY,ZI: IN STD_LOGIC; FC,FZ: OUT STD_LOGIC ); END LS74; ARCHITECTURE

23、 A OF LS74 IS BEGIN PROCESS(LDFR) BEGIN IF(LDFR'EVENT AND LDFR='1') THEN FC<=CY; FZ<=ZI; END IF; END PROCESS; END A; 状态条件寄存器单元设计实验操作方法与ALU单元设计实验操作方法相同,以后的单元设计实验操作方法不再重复说明。(3)、暂存寄存器、通用寄存器、地址寄存器、指令寄存器单元 模型机中暂存寄存器、通用寄存器、地址寄存器、指令寄存器都采用8位数据寄存器LS273元件,只是上述各个寄存器实体的命名分别为:AC,DR,R0,R1,R2,AR,

24、IR。LS273元件符号如图8所示。 图8 LS273元件符号 LS273单元设计的VHDL语言程序如下: - 8位数据寄存器的VHDL源程序LS273.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY LS273 IS PORT( D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK: IN STD_LOGIC; O: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END LS273; ARCHITECTURE A OF LS273 IS BEGIN PROCESS(CLK) BEG

25、IN IF(CLK'EVENT AND CLK='1') THEN O<=D; END IF; END PROCESS; END A; (4)、1:2分配器单元 1:2分配器单元用来将ALU的运算结果或通用寄存器的内容(经3选1多路选择器)回送到数据总线,或者将ALU的运算结果或通用寄存器的内容送往输出设备显示。1:2分配器单元的功能描述见表4。1:2分配器单元元件符号如图9所示。 表4 1:2分配器单元FEN2的功能表 图9 分配器单元元件符号 1:2分配器单元设计的VHDL语言程序如下: - 1:2分配器的VHDL源程序FEN2.vhd LIBRARY IEE

26、E; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FEN2 IS PORT( WR,LED_B:IN STD_LOGIC; X:IN STD_LOGIC_VECTOR(7 DOWNTO 0); W1,W2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END FEN2; ARCHITECTURE A OF FEN2 IS BEGIN PROCESS(LED_B,WR) BEGIN IF(LED_B='0' AND WR='0') THEN W2<=X; ELSE W1<=X; END IF; EN

27、D PROCESS; END A; (5)、3选1数据选择器单元 3选1数据选择器单元MUX3在数据输入控制信号SW_B、只读存储器片选控制信号CS的控制下,用来从外部输入数据端ID7.0、4选1多路选择器的输出端N17.0和只读存储器ROM的输出端N27.0选择一个8位的数据进入内部数据总线。3选1数据选择器单元的功能表见表5。3选1数据选择器单元元件符号如图10所示。 表5 3选1数据选择器MUX3的功能表 图10 3选1数据选择器单元元件符号 3选1数据选择器单元设计的VHDL语言程序如下: -3选1数据选择器单元VHDL源程序MUX3.vhd LIBRARY IEEE; USE IEE

28、E.STD_LOGIC_1164.ALL; ENTITY MUX3 IS PORT( ID:IN STD_LOGIC_VECTOR(7 DOWNTO 0); SW_B,CS:IN STD_LOGIC; N1,N2:IN STD_LOGIC_VECTOR(7 DOWNTO 0); EW:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END MUX3; ARCHITECTURE A OF MUX3 IS BEGIN PROCESS(SW_B,CS) BEGIN IF(SW_B='0') THEN EW<=ID; ELSIF(CS='0'

29、;)THEN EW<=N2; ELSE EW<=N1; END IF; END PROCESS; END A; (6)、4选1数据选择器单元 4选1数据选择器单元MUX4在数据输入控制信号C(R0_B)、D(R1_B)、E(R2_B)、F(ALU_B)的控制下,用来从有三个通用寄存器的数据输出端和ALU的数据输出端选择一个8位的数据输入1:2分配器的数据输入端。4选1数据选择器单元的功能表6,4选1数据选择器单元元件符号如图11所示。 表6 4选1数据选择器MUX4的功能表 图11 4选1数据选择器单元元件符号 4选1数据选择器单元设计的VHDL语言程序如下: -4选1数据选择器单

30、元VHDL源程序MUX4.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX4 IS PORT( C,D,E,F: IN STD_LOGIC; X1,X2,X3,X4: IN STD_LOGIC_VECTOR(7 DOWNTO 0); W: out STD_LOGIC_VECTOR(7 DOWNTO 0) ); END MUX4; ARCHITECTURE A OF MUX4 IS SIGNAL SEL: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN SEL<=F&E&D&C

31、; PROCESS(SEL) BEGIN - CASE SEL IS - WHEN "1110"=> - W<=X1; - WHEN "1101"=> - W<=X2; - WHEN "1011"=> - W<=X3; - WHEN "0111"=> - W<=X4; - WHEN OTHERS => - NULL; -END CASE; IF(SEL="1110") THEN -R0_out W<=X1; ELSIF(SEL=&quo

32、t;1101") THEN -R1_out W<=X2; ELSIF(SEL="1011") THEN -R2-out W<=X3; ELSIF(SEL="0111") THEN -ALU_out W<=X4; ELSE null; END IF; END PROCESS; END A; (7)、程序计数器单元 程序计数器单元的元件符号如图12,它在控制信号的控制下具有清“0”,置计数初值和加1功能,其作用是保证程序的顺序执行,在执行跳转指令时,通过修改PC的值达到程序转移分支的目的。程序计数器PC的输出直接送往地址寄存器AR

33、(LS273芯片)。程序计数器PC的功能表见表7。 图12 程序计数器单元的元件符号 表7 程序计数器PC的功能表 程序计数器单元设计的VHDL语言程序如下: -程序计数器单元VHDL源程序PC.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PC IS PORT( load,LDPC,CLR: IN STD_LOGIC; D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); O: OUT S

34、TD_LOGIC_VECTOR(7 DOWNTO 0) ); END PC; ARCHITECTURE A OF PC IS SIGNAL QOUT: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(LDPC,CLR,load) BEGIN IF(CLR='0') THEN QOUT<="" ELSIF(LDPC'EVENT AND LDPC='1') THEN IF(load='0') THEN QOUT<=D; -BUS->PC ELSE QOUT<=

35、QOUT+1; -PC+1 END IF; END IF; END PROCESS; O<=QOUT; END A; (8)、主存储器单元 CISC模型机由于只运行完成一定功能的程序而不需要进行数据处理,所以只采用ROM芯片作为它的主存储器单元,没有配置读写存储器RAM芯片。它的主存储器单元是一片256×8位的ROM芯片,如图13所示。ADDR7.0为8位坡地输入端,CS为片选信号,DOUT7.0 为8位数据输出端,它的功能表见表8。 图13 ROM芯片元件符号 表8 主存储器ROM16的功能表 在CISC模型机中,ROM芯片的读操作时序如图14所示,ROM的读操作仅与片选信号

36、CS有关,CS为低电平有效,有效电平的范围为一个CPU周期。图14 CISC模型机中ROM芯片的读操作时序图 在图13中,主存储器的地址输入端直接与地址寄存器的输出相连,数据输出端经3选1数据选择器送往数据总线。主存储器单元的VHDL程序主存储器单元设计的VHDL程序如下: -主存储器单元VHDL源程序ROM16.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ROM16 IS PORT( DOUT:OUT S

37、TD_LOGIC_VECTOR(7 DOWNTO 0); ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CS:IN STD_LOGIC ); END ROM16; ARCHITECTURE A OF ROM16 IS BEGIN DOUT<="" WHEN ADDR="" AND CS='0' ELSE "" WHEN ADDR="" AND CS='0' ELSE "" WHEN ADDR="" AND C

38、S='0' ELSE "" WHEN ADDR="" AND CS='0' ELSE "" WHEN ADDR="" AND CS='0' ELSE "" WHEN ADDR="" AND CS='0' ELSE "" WHEN ADDR="" AND CS='0' ELSE "" WHEN ADDR="" AND C

39、S='0' ELSE "" WHEN ADDR="" AND CS='0' ELSE "" WHEN ADDR="" AND CS='0' ELSE "" WHEN ADDR="" AND CS='0' ELSE "" WHEN ADDR="" AND CS='0' ELSE "" WHEN ADDR="" AND C

40、S='0' ELSE "" WHEN ADDR="" AND CS='0' ELSE "" WHEN ADDR="" AND CS='0' ELSE "" WHEN ADDR="" AND CS='0' ELSE "" END A; (9)、时序产生器单元 时序产生器主要用来产生节拍脉冲信号(T1、T2、T3、T4),对各种控制信号实施时间上控制。时序产生器单元元件符号如图15所示,它内容采用

41、一个2位普通计数器,计数值译码后产生节拍脉冲信号(T1、T2、T3、T4),Q为外部时钟输入信号。时序产生器单元的功能表如表9所示。 图15 时序产生器元件符号 表9 时序产生器单元COUNTER的功能表 时序产生器单元设计的VHDL程序如下: -时序产生器单元的VHDL源程序COUNTER.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY COUNTER IS PORT( Q,CLR: IN STD_LOGIC

42、; T2,T3,T4: OUT STD_LOGIC ); END COUNTER; ARCHITECTURE A OF COUNTER IS SIGNAL X: STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN PROCESS(Q,CLR) BEGIN IF(CLR='0') THEN T2<='0' T3<='0' T4<='0' X<="00" ELSIF(Q'EVENT AND Q='1') THEN X<=X+1; T2<

43、=(NOT X(1) AND X(0); T3<=X(1) AND (NOT X(0); T4<=X(1) AND X(0); END IF; END PROCESS; END A; (10)、微程序控制器单元 微程序控制器器由地址转移逻辑电路ADDR、微地址寄存器aa、控制存储器CONTROM和微命令寄存器MCOMMAND等几部分组成。为了方便电路的设计与连线,在进行本模型机微程序控制器单元内部结构设计时,增加了F1、F2和F3共三个用于多根单线与总线之间转换的器件。 微程序控制器单元的内部结构如图16所示,微程序控制器单元元件符号如图17所示。 图16 微程序控制器的内部结构图

44、 图17 微程序控制器单元元件符号 a、 地址转换逻辑电路 地址转换逻辑电路ADDR设计原理在前面设计方案中作了详细介绍,这里不再说明。它的元件符号如图18所示。 图18 地址转换逻辑电路元件符号 地址转换逻辑电路设计的VHDL程序如下: -地址转换逻辑电路的VHDL源程序ADDR.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ADDR IS PORT( I7,I6,I5,I4:IN STD_LOGIC; FZ,FC,T4,P1,P2:IN STD_LOGIC; SE6,SE5,SE4,SE3,SE2,SE1:OUT STD_LOG

45、IC ); END ADDR; ARCHITECTURE A OF ADDR IS BEGIN SE6<='1' SE5<=NOT(NOT FC OR FZ)AND P2 AND T4); SE4<=NOT(I7 AND P1 AND T4); SE3<=NOT(I6 AND P1 AND T4); SE2<=NOT(I5 AND P1 AND T4); SE1<=NOT(I4 AND P1 AND T4); END A; b、 微地址寄存器 微地址寄存器aa的内部结构如图19所示, 微地址寄存器aa的元件符号如图20所示。 图19 微地址寄

46、存器aa的内部结构 图20 微地址寄存器aa的元件符号 在图19中带有异步清“0”和异步置“1”功能的触发器MMM是由VHDL语言设计的,它的元件符号如图21所示。 图21 触发器MMM元件符号 触发器MMM的VHDL程序如下: -触发器MMM的VHDL源程序MMM.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MMM IS PORT( SE:IN STD_LOGIC; T2:IN STD_LOGIC; D:IN STD_LOGIC; CLR:IN STD_LOGIC; UA:OUT STD_LOGIC ); END MMM; AR

47、CHITECTURE A OF MMM IS BEGIN PROCESS(CLR,SE,T2) BEGIN IF(CLR='0') THEN UA<='0' ELSIF(SE='0')THEN UA<='1' ELSIF(T2'EVENT AND T2='1') THEN UA<=D; END IF; END PROCESS; END A; 微地址寄存器aa设计的实验操作方法说明:它需要采用MAX+plusII的VHDL文本设计法和电路图形设计法相结合的方法完成。首先用VHDL文本设计法完

48、成触发器MMM元件符号的创建,然后用图形输入设计法完成微地址寄存器aa元件符号创建。 c、 控制存储器 控制存储器CONTROM的元件符号如图22所示。控制存储器中存放的所有微指令和对应的微地址均来自设计方案的微指令列表(即表2)。 图22 控制存储器CONTROM的元件符号 控制存储器CONTROM设计的VHDL程序如下: -控制存储器CONTROM的VHDL源程序CONTROM.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.AL

49、L; ENTITY CONTROM IS PORT(ADDR: IN STD_LOGIC_VECTOR(5 DOWNTO 0); UA:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); D:OUT STD_LOGIC_VECTOR(18 DOWNTO 0) ); END CONTROM; ARCHITECTURE A OF CONTROM IS SIGNAL DATAOUT: STD_LOGIC_VECTOR(24 DOWNTO 0); BEGIN PROCESS(ADDR) BEGIN CASE ADDR IS WHEN "" => DATAOUT

50、<="010" WHEN "" => DATAOUT<="000" WHEN "" => DATAOUT<="000" WHEN "" => DATAOUT<="101" WHEN "" => DATAOUT<="000" WHEN "" => DATAOUT<="111" WHEN "" =

51、> DATAOUT<="000" WHEN "" => DATAOUT<="000" WHEN "" => DATAOUT<="011" WHEN "" => DATAOUT<="100" WHEN "" => DATAOUT<="000" WHEN "" => DATAOUT<="110" WHEN &q

52、uot;" => DATAOUT<="010" WHEN "" => DATAOUT<="011" WHEN "" => DATAOUT<="000" WHEN "" => DATAOUT<="000" WHEN "" => DATAOUT<="000" WHEN "" => DATAOUT<="000&q

53、uot; WHEN "" => DATAOUT<="000" WHEN OTHERS => DATAOUT<="000" END CASE; UA(5 DOWNTO 0)<=DATAOUT(5 DOWNTO 0); D(18 DOWNTO 0)<=DATAOUT(24 DOWNTO 6); END PROCESS; END A; d、 微命令寄存器 微命令寄存器MCOMMAND的元件符号如图23所示。 图23 微命令寄存器MCOMMAND的元件符号 微命令寄存器MCOMMAND设计VHDL程序如下:

54、 -微命令寄存器MCOMMAND的VHDL源程序MCOMMAND.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY MCOMMAND IS PORT( T2,T3,T4,I3,I2,I1,I0:IN STD_LOGIC; O:IN STD_LOGIC_VECTOR(18 DOWNTO 0); P1,P2,LOAD,LDPC,LDAR,LDIR,LDR0,LDR1,LDR2,R0_B,R1_B,R2_B,S1,S0

55、, ALU_B,LDAC,LDDR,WR,CS,SW_B,LED_B,LDFR:OUT STD_LOGIC ); END MCOMMAND; ARCHITECTURE A OF MCOMMAND IS SIGNAL DATAOUT:STD_LOGIC_VECTOR(18 DOWNTO 0); BEGIN PROCESS(T2) BEGIN IF(T2'EVENT AND T2='1') THEN DATAOUT(18 DOWNTO 0)<=O(18 DOWNTO 0); END IF; P2<=DATAOUT(0); P1<=DATAOUT(1); L

56、DFR<=DATAOUT(2) AND T4; LED_B<=DATAOUT(3); SW_B<=DATAOUT(4); CS<=DATAOUT(5); WR<=DATAOUT(6) OR(NOT T3); LDDR<=DATAOUT(7) AND T4; LDAC<=DATAOUT(8) AND T4; ALU_B<=DATAOUT(9); S0<=DATAOUT(10); S1<=DATAOUT(11); R2_B<=(DATAOUT(13) OR (NOT I1) OR I0)AND(DATAOUT(12) OR (NOT I3) OR I2); R1_B<=(DATAOUT(13) OR I1 OR (NOT I0)AND(DATAOUT(12) OR I3 OR (NOT I2); R0_B<=(DATAOUT(13) OR I1 OR I0 )AND(DATAOUT(12) OR I3 OR I2); LDR2<=T4 AND DATAOUT(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论