CPU武汉大学信息安全实验报告完整版

2026/1/26 15:58:19

end loop; temp2(0) := '0'; c <= alu_b(15); v<='0';

when \temp2(15) := '0'; for I in 15 downto 1 loop temp2(I-1) := alu_b(I); end loop;

temp2(15) := '0'; c <= alu_b(0); v<='0';

when others=>

temp2 := \

end case;

alu_out <= temp2;

if temp2 = \else z<='0'; end if;

if temp2(15) = '1' then s<='1'; else s<='0';

end if;

end process; end behave;

这部分主要要注意的地方就是标志位C和V的数值。溢出标志位OF:在运算过程中,如操作数超出了机器能标似的范围称为溢出,此时OF位置1,否则置0。进位标志CF:记录运算时从最高有效位产生的进位值,例如,执行加法指令时,最高有效位有进位时置1,否则置0。后文对此进一步解释说(page 59),OF用来表示带符号数的溢出,CF用来表示无符号数的溢出。

根据这一说明,可以这样判断V和C标志位的值:

V:如果正数(符号位为0)与正数之和为负数(符号位为1),或是负数与负数之和为正数,则发生了溢出,V置1;

C:两数之和大于1111111111111111,则产生了进位,C置1;被减数小于减数,则产生借位,C置1。注意要使用无符号数的比较符号>、<需包含库函数ieee.std_logic_arith和ieee.std_logic_unsigned。

另外要注意的是,只有算术运算需要考虑进位和溢出标志位,逻辑运算,除非带C移位和循环,否则无需考虑这两个标志位。

(2) 数据选择器BUS_MUX:组合逻辑器件,其输入包括:源寄存器数据,目

标寄存器数据,带符号位扩展的偏移地址,PC,以及从内存读取的立即数、跳转地址等数据。在3位控制信号alu_in的控制下它进行ALU 模块A、B端输入的选择:

alu_in_sel 000 001 010 011 100 101

由Quartus生成的.bsf图如下:

ALU_A SR SR 0 OFFSET 0 0 ALU_B DR 0 DR PC PC DATA

其VHDL语言的行为描述如下: library ieee;

use ieee.std_logic_1164.all;

entity bus_mux is

port( alu_in_sel : in std_logic_vector(2 downto 0); data,pc,offset,sr,dr : in std_logic_vector(15 downto 0); alu_sr,alu_dr : out std_logic_vector(15 downto 0)); end bus_mux;

architecture behave of bus_mux is begin

process(alu_in_sel,data,pc,offset,sr,dr) begin case alu_in_sel is

when \alu_sr<=sr; alu_dr<=dr; when \ alu_sr<=sr;

alu_dr<=\when \

alu_sr<=\alu_dr<=dr; when \alu_sr<=offset;

alu_dr<=pc;

when \

alu_sr<=\alu_dr<=pc; when \

alu_sr<=\alu_dr<=data;

when others=>

alu_sr<=\alu_dr<=\

end case; end process; end behave;

由于在我们的设计中只有ALU部件有加法器的功能,而对程序计数器的自增并没有再另设一个加法器,故ALU的输入组合情况较多。在对全部指令的执行步骤进行了分析后,共列出了表中所示的6种情况,故使用了3位控制信号。

(3) 器件T1:组合逻辑器件,用于产生ALU的进位输入Cin,受两位控制信

号SCI的选择控制,输入为标志寄存的输出FLAG_C:

SCI 00 01 10

由Quartus生成的.bsf图如下:

Cin 0 1 FLAG_C

其VHDL语言的行为描述如下: library ieee;

use ieee.std_logic_1164.all;

entity t1 is

port(flag_c:in std_logic;

sci:in std_logic_vector(1 downto 0); alu_cin:out std_logic); end t1;

architecture behave of t1 is begin

process(sci,flag_c) begin case sci is

when \alu_cin<='0'; when \alu_cin<='1'; when \alu_cin<=flag_c; when others=> alu_cin<='0'; end case;

end process; end behave;

(4) 标志寄存器FLAG_REG:时序逻辑部件,带有清零端RESET,输出只在

时钟正跳变时发生变化;接收ALU的标志位输出,在控制信号SST的控制下输出实际需要的标志位:

SST 00 01 10 11 0 1 C C Z V 接受ALU的运算结果 Z Z Z V V V S S S S

由Quartus生成的.bsf图如下:

其VHDL语言的行为描述如下: library ieee;

use ieee.std_logic_1164.all;

entity flag_reg is

port( sst: in std_logic_vector(1 downto 0); c,z,v,s,clk,reset: in std_logic;


CPU武汉大学信息安全实验报告完整版.doc 将本文的Word文档下载到电脑
搜索更多关于: CPU武汉大学信息安全实验报告完整版 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219