最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

东北大学秦皇岛分校组成原理课程设计

来源:动视网 责编:小OO 时间:2025-09-30 14:11:19
文档

东北大学秦皇岛分校组成原理课程设计

东北大学秦皇岛分校计工学院计算机组成与结构课程设计指令系统及译码器设计专业名称计算机科学与技术班级学号学生姓名指导教师设计时间【课程设计内容】题目:16位模型机设计-指令系统及译码器设计1、指令系统设计:本次课程设计要设计的指令使第5、19、29、34号指令,要清楚各条指令的功能、指令类型、寻址方式等内容,本次设计用到指令的相关内容如表1所示。表1本次要设计的指令指令编号助记符指令类型功能寻址方式5ADDA,R?算术运算指令将寄存器R?的值加入累加器A中直接寻址19SUBCA,MM算术运算指令
推荐度:
导读东北大学秦皇岛分校计工学院计算机组成与结构课程设计指令系统及译码器设计专业名称计算机科学与技术班级学号学生姓名指导教师设计时间【课程设计内容】题目:16位模型机设计-指令系统及译码器设计1、指令系统设计:本次课程设计要设计的指令使第5、19、29、34号指令,要清楚各条指令的功能、指令类型、寻址方式等内容,本次设计用到指令的相关内容如表1所示。表1本次要设计的指令指令编号助记符指令类型功能寻址方式5ADDA,R?算术运算指令将寄存器R?的值加入累加器A中直接寻址19SUBCA,MM算术运算指令


东北大学秦皇岛分校计工学院

计算机组成与结构课程设计

指令系统及译码器设计

专业名称计算机科学与技术
班级学号
学生姓名
指导教师
设计时间
【课程设计内容】

题目:16位模型机设计-指令系统及译码器设计

1、指令系统设计:

本次课程设计要设计的指令使第5、19、29、34号指令,要清楚各条指令的功能、指令类型、寻址方式等内容,本次设计用到指令的相关内容如表1所示。

表1  本次要设计的指令

指令编号助记符指令类型功能寻址方式

5

ADD A, R?

算术运算指令

将寄存器R?的值加入累加器A中

直接寻址

19

SUBC A,MM

算术运算指令

从累加器A中减去MM地址的值,减进位

   直接寻址

29

 MOV  A,R?

逻辑运算指令

将寄存器R?的值送到累加器A中

直接寻址

34

 

MOV @R?, A

逻辑运算指令

将累加器A的值送入间址存储器中

间接寻址

2、模型机硬件设计: 

题目:模型机硬件设计——    主存地址寄存器MAR设计

     MAR是主存和CPU之间的接口,可以接收由程序计数器(PC)的指令地址或来自运算器的操作数的地址,以确定要访问的单元。

3、逻辑电路设计:

题目:    八进制可逆计数器设计

    根据计数控制信号的不同,在时钟脉冲作用下,计数器可以进行加1或者减1操作的一种计数器。可逆计数器有一个特殊的控制端,这就是up端。当up='1'时,计数器进行加1操作,当up='0'时,计数器就进行减1操作。

【系统设计】

1、模型机逻辑框图(整机逻辑框图、芯片引脚及CPU逻辑框图如下图1、图2、图3所示)

   图1  整机逻辑框图

图2 芯片引脚

图3 CPU逻辑框图

2、指令系统设计

   指令类型及寻址方式见表1。

3、微操作控制信号

1、XRD :外部设备读信号,当给出了外设的地址后,输出此信号,从指外设读数据。

2、EMWR:程序存储器EM写信号。

3、EMRD:程序存储器EM读信号。

4、PCOE:将程序计数器PC的值送到地址总线ABUS上(MAR)。

5、 EMEN:将程序存储器EM与数据总线DBUS接通,由EMWR和EMRD 决定是将DBUS数据写到EM中,还是从EM读出数据送到DBUS。

6、 IREN:将程序存储器EM读出的数据打入指令寄存器IR。

7、 EINT:中断返回时清除中断响应和中断请求标志,便于下次中断。

8、 ELP:PC打入允许,与指令寄存器IR3、IR2位结合,控制程序跳转。

9、 FSTC:进位置1,CY=1

10、FCLC:进位置0,CY=0

11、MAREN:将地址总线ABUS上的地址打入地址寄存器MAR。

12、MAROE:将地址寄存器MAR的值送到地址总线ABUS上。

13、OUTEN:将数据总线DBUS上数据送到输出端口寄存器OUT里。

14、STEN:将数据总线DBUS上数据存入堆栈寄存器ST中。

15、RRD:读寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。

16、RWR:写寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。

17、CN:决定运算器是否带进位移位,CN=1带进位,CN=0不带进位。

18、FEN:将标志位存入ALU内部的标志寄存器。

19、WEN:将数据总线DBUS的值打入工作寄存器W中。

20、AEN:将数据总线DBUS的值打入累加器A中。

21-23:  X2~ X0:X2、X1、X0三位组合来译码选择将数据送到DBUS上的寄存器。 

24-26:  S2~ S0:S2、S1、S0三位组合决定ALU做何种运算。

4、指令执行流程      

编号助记符功能机器码周期总数CT

节拍数微操作控制信号
0_FATCH_取指令000000XX010T2PC→MAR

PCOE MAREN
T1EM→W

EMEN EMRD WEN
T0W→IR 

PC+1->PC

IREN
5ADD A, R?将寄存器R?的值加入累加器A中

000100XX100T4R?->WRRD,X2~X0,WEN
T3ALU(A+W)->DBUS DBUS->AS2~S0,X2~X0,

AEN,CN=0,FEN

19SUBC A, EM从累加器A中减去间址存储器的值,带进位

010010XX

111T7 PC->MARPCOE,MAREN
T6EM->MAR

PC+1->PC

 EMEN,EMRD,

   MAREN

T5 EM->MAREMEN,EMRD,

MAREN

T4EM->WEMEN,EMRD,

WEN

T3ALU(A-W)->DBUS DBUS->AS2~S0,X2~X0,

AEN,CN=1,FEN

29

MOV  A,R?

将R?中的值送入A中

011100XX100T4R?->WRRD,X2~X0,WEN
T3 W->A    AEN

34

MOV @R?, A将累加器A的值送入间址存储器中

100001XX101T4R?->DBUS->MARX2~X0 RRD,MAREN
T3 A->EM   EMEN
指令的执行流程图如图4所示:

                      开始

                      T2    PCOE;MAREN

                      T1    EMEN;EMRD;WEN

                      T0    IREN

ADD A, R?      SUBC A, EM              MOV A,R?               MOV @R?, A

T4

         T7                        T4                    T4

           

T3

          T6    T5            T3                     T3

         T5

         T4    T3

         T3

【系统实现】

1、模型机实现(主存地址寄存器MAR的实现)

(1)逻辑电路的图形符号表示、功能

主存地址寄存器MAR电路图形符号如图5所示:

                     图5 主存地址寄存器MAR图形符号表示

主存地址寄存器MAR的功能如表3(其中cp作为时钟,pcoe,maren,pcadr,dadr是输入端,marout是输出端,pcoe=1表示将程序计数器PC地址输入到寄存器MAR中, maren=1表示将数据总线中的地址输入到寄存器MAR中,当pcoe=0,maren=0,寄存器输出0000):

表3 程序计数器PC的功能表

输入端输出端
pcoemarenpcadrdadrmarout
    1    0    1010    0100    1010
    0    0011010000000
    01101101110111
    

(2)指令所涉及的微操作控制信号

     PCOE:将程序计数器PC的值送到主存地址寄存器MAR上。

     MAREN:将数据总线DBUS的值送到主存地址寄存器MAR上。

(3)系统实现

实现主存地址寄存器MAR的VHDL源代码:

library IEEE;

use IEEE.STD_LOGIC_11.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating

---- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

entity z is

    Port ( cp : in  STD_LOGIC;

       pcoe : in  STD_LOGIC;

           maren : in  STD_LOGIC;

           pcadr : in  STD_LOGIC_VECTOR(3 DOWNTO 0);

           dadr : in  STD_LOGIC_VECTOR(3 DOWNTO 0);

           marout : out  STD_LOGIC_VECTOR(3 DOWNTO 0));

end z;

architecture Behavioral of z is

signal mout:STD_LOGIC_VECTOR(3 DOWNTO 0);

begin

process(pcoe,maren,pcadr,dadr) is

begin

if(pcoe='0' and maren='0') then

mout<="0000";

else if(pcoe='1')then

mout<=pcadr;

else if(maren='1')then

mout<=dadr;

end if;

end if;

end if;

end process;

marout<=mout;

end Behavioral;

2、逻辑电路设计(八进制可逆计数器的设计)

(1)逻辑电路的图形符号表示、功能

 八进制可逆计数器的电路图形符号如图6所示:

图6 八进制可逆计数器图形符号表示

功能:clk为计数器时钟信号,rst为复位信号,高电平有效,当rst为低电平时,计数器不计数,当为高电平时,开始计数,en为计数器的使能端(高电平计数器工作),up为可逆控制信号,当up为高电平时,递增计数,当up为低电平时,递减计数,sum是计数器的输出端,cout是计数器在计数一个周期后翻转一次,使计数器的一个周期更为清晰。

(2)指令所涉及的微操作控制信号

八进制可逆计数器用到的控制信号就是clk,rst,en,up是控制计数器的工作状态和输出,当clk为上升沿时,计数器根据其他控制信号开始计数,功能表如表4如下:

表4 八进制可逆计数器功能表

当up=0,计数器递减计数:

控制信号输出端
clkrstenup=0sumcout
0100001
1101110
1101100
1101010
1101000
1100110
1100110
1100100
1100010
1100001
当up=1,计数器递减计数:

控制信号输出端
clkrstenup=1sumcout
0110000
1110010
1110100
1110110
1111000
1111010
1111100
1111111
1110000
1110010
(3)系统实现

实现八进制可逆计数器的VHDL源代码如下:

Library ieee;

Use ieee.std_logic_11.all;

Use ieee.std_logic_unsigned.all;

Entity up_down is

    Port(clk,rst,en,up:    in    std_logic;

        Sum:    out    std_logic_vector(2 downto 0);

        Cout:    out    std_logic);

End up_down;

Architecture a of up_down is

Signal count:    std_logic_vector(2 downto 0);

Begin

    Process(clk,rst)is

    Begin

        If rst='0' then

            Count<=(others=>'0');

        Elsif rising_edge(clk) then

            If (en='1') then

                Case up is

                    When '1' => count<=count+1;

                    When others =>count<=count-1;

                End case;

            End if;

        End if;

    End process;

Sum<=count;

Cout <='1' when en='1' and ((up='1' and count=7) or (up='0' and count=0)) else '0';

End a;

【系统测试】

(一)、模型机测试(主存地址寄存器MAR测试)

1、功能仿真

仿真时用到的输入波形如图7所示:

图7 仿真时用到的输入波形图

仿真得到的波形图如图8所示:

图8 主存地址寄存器MAR仿真结果波形图

结果分析:从图8中可以看出主存地址寄存器MAR的各个输入端的在每一时刻得到的输出都与表3主存地址寄存器的功能表中期待的输出一致,所以程序主存地址寄存器MAR的设计是正确的。

2、RTL级逻辑电路

主存地址寄存器MAR的RTL级电路图如图9、图10、图11所示:

图9 主存地址寄存器MAR  RTL级电路图

图10 主存地址寄存器MAR RTL级电路图

图10 主存地址寄存器MAR 详细电路图

(二)硬件测试(八进制可逆计数器测试)

1、功能仿真

   八进制可逆计数器仿真用到的输入波形如图12所示:

图12八进制可逆计数器仿真时的输入波形

仿真得到的结果波形如图13所示:

图13 仿真得到的结果波形图

结果分析:对照得到的结果波形图图12和八进制可逆计数器的功能表表4可以看出,得到的结果和功能所期望的结果一样,所以此设计是正确的。

2、RTL级逻辑电路

  八进制可逆计数器的RTL级逻辑电路如下各图所示:

图 14 八进制可逆计数器的内部芯片图

图 15 八进制可逆计数器的芯片图

图16 八进制可逆计数器芯片控制端连接逻辑图

图17 八进制可逆计数器片内部的逻辑图

【总结与体会】

     此次课程设计遇到了好多问题,特别是软件的安装和使用问题,仿真软件ModelSim安装好后老是打不开,装了好多次都不行,经过不断地查找资料终于找到是因为license.dat文件设置的错误;还有就是Xilinx ISE软件没法调用仿真软件ModelSim进行仿真,解决的办法是因为新建文件时没有选用用ModelSim软件仿真选项;还有就是建好测试波形进行测试时,Process中没有ModelSim Simulator选项,本以为是软件的错误就有进行了安装,可是还是这个样子,后来不经意点了一下Sources中的那个波形文件,ModelSim Simulator选项就出来了。还有就是进行测试时要选择合适的波形文件然后调用仿真软件进行仿真,否则得到的波形图是红线,就是错误的。

【参考资料】

[1] 袁静波,丁顺利,王和兴,宋欣 . 计算机组成与结构[M] .北京:机械工业出版社,2011.

[2] 胡越明 . 计算机组成与设计[M] . 北京:科学出版社,2006.

[3] 王爱英 . 计算机组成与结构[M] . 北京:清华大学出版社,2007.

熟悉实验设备、收集资料:2   天

设计图纸、实验、计算、程序编写调试:5   天

编写课程设计报告:2   天

答辩:1   天

文档

东北大学秦皇岛分校组成原理课程设计

东北大学秦皇岛分校计工学院计算机组成与结构课程设计指令系统及译码器设计专业名称计算机科学与技术班级学号学生姓名指导教师设计时间【课程设计内容】题目:16位模型机设计-指令系统及译码器设计1、指令系统设计:本次课程设计要设计的指令使第5、19、29、34号指令,要清楚各条指令的功能、指令类型、寻址方式等内容,本次设计用到指令的相关内容如表1所示。表1本次要设计的指令指令编号助记符指令类型功能寻址方式5ADDA,R?算术运算指令将寄存器R?的值加入累加器A中直接寻址19SUBCA,MM算术运算指令
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top