1、2.2.2 系统状态转移图如上图,系统共有3个状态:S0、S1、S2。分别为S0:在这一状态,通过拨码和按键录入要执行的指令。S1:在这一状态,CPU执行程序,即S0录入的指令。S2:在这一状态,CPU执行完全部程序,等待再次执行或等待录入指令。2.2.3 求解最大公约数的程序框图设a,b为给定的两个整数,用辗转相减法求解他们的最大公约数:开始ab是否成立?a、b交换成立 成立b为所求最大公约数。程序结束2.3 分块设计2.3.1 DIV(分频器) DIV将电路板所提供的时钟分频,产生CPU工作所需要的时钟以及数码管扫描所需要的时钟。2.3.2 MCU (控制器) MCU 用来产生系统内部所有
2、寄存器、运算单元所需的控制信号,以及执行各条指令所需要的微操作。它是整个系统设计的核心所在。2.3.3 ALU(算术逻辑运算单元)ALU完成数据的算术和逻辑运算。ALU有5个输入端和2个输出端,其中一个操作数固定来自累加器acc(具体编程时可用变量或信号表示),另一个操作数来自端口mbr_in(通过数据总线接到寄存器MBR)。参加运算的操作数在ALU中进行规定的操作运算,运算结束后,一方面将结果送至累加器,同时将操作结果的特征状态送标志寄存器。2.3.4 MAR (地址寄存器) MAR 存放着要被读取或写入的内存单元地址。其中,读操作时,CPU从内存读。而写操作时,CPU把数据写入内存。2.3
3、.5 MBR (缓冲寄存器) MBR存放了将要存储到内存的数据或者从内存中读取的最新数据。MBR连接到系统总线中的地址总线。2.3.6 RAM(随机存取存储器) RAM 有着相对独立的输入输出管脚,在本系统设计中它作为内存使用。它不是CPU内部的寄存器,不属于CPU的一部分。但要测试所设计的CPU的性能,需要把RAM加进系统设计中。2.3.7 SMG (数码管显示 )SMG负责将运算结果转化为BCD码形式,然后用数码馆显示。3 仿真波形及波形分析根据波形图可以看出状态机的运行,其中一个状态占两个时钟周期。该仿真相当于CPU执行指令的时序图,反映了程序运行情况。还包括了辗转相减法的仿真,和rst
4、的清零仿真。可以看出该CPU系统的仿真结果正确,达到下载的要求。4 源程序(含注释)各个部件对应的源程序如下(最后的连接是用图形连接完成的):4.1 DIV(分频器) library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity DIV isport( clk_in:in std_logic; clk_out1:out std_logic; clk_out2:out std_logic);end DIV;architecture behave of DIV issignal tmp:std_log
5、ic_vector(15 downto 0);beginprocess(clk_in,tmp) if(clk_inevent and clk_in=1)then tmp=tmp+1; end if; clk_out1=tmp(0); clk_out2ctrstatus:=status+1; -MBR-RAM00010 -MAR-MBR00011 -DECODING case opcode is000100100 -Store -MBR-ACC001000101 -Load -MBR001100111 -Add -MBR010001001 -Sub -MBR010111111 -SHL -ACC
6、-ACC10110 -SHR -ACC011101011 -And -MBR100001101 -Or -MBR1001 -Not -ACC end case; -Store -RAM -Load -BR-MBR;ACC-000110 -ACC-ACC+BR -Add -BR01000 -Sub -BR01010-ACC-BR -And -BR01100-ACC AND BR -Or -BR01110-ACC OR BR01111 -Mutiply-BR10000-ACC*BR -PC-PC+1;MAR-PC end process;4.3 ALU(算术逻辑运算单元)entity ALU is rst: mbr_in:in std_logic_vector(11 downto 0); mbr_e: ctrl: overflow: acc:out std_logic_vector(11 downto 0)end ALU;architecture behave of ALU isprocess(clk,rst)variable br: std_logic_vector(11 downto 0);variable data_acc:std_logic_vector(11 downto 0); if(clkevent and
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1