当前位置:首页 > ALU(西南交大)VHDL
实验五 注意事项
1. 电路逻辑结构图按照实验指导书图绘制。
2. 逻辑功能描述按照实验指导书,可以加上功能端。
3. 实验报告程序设计部分实现的方式有两种 ALU和数码显示部分都用同一个程序实现,则实验报告上用钢笔或中性笔手写程序
若ALU单元用代码实现,然后生成BLOCK图,再和实验四生成的模块连接,则需要手写ALU单元的代码,并画出ALU和七段数码显示连接的BLOCK图,然后将该BLOCK图截图、打印、粘贴。七段数码显示的代码不需要写,在实验报告中需要注明七段数码显示的代码引用实验四代码。
4. ALU单元设计注意事项: 数据从D端输入,由SEL端和Wt端控制写入A或B。 当A、B数据端的数据均输入后,则可以按照功能选择端S0、S1、S2的控制 ,进行相关运算。 移位运算要求用运算符拼接的形式。即'0'&A(6 downto 0)是八位数据A的逻辑左移。 请分清楚,逻辑右移(左移)、算术右移(左移),循环移位和有移位输入输出端的移位。本实验仅仅涉及逻辑移位。不要直接使用移位函数。 A、B数据输入端的变量定义为Variable类型变量
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY alu IS
PORT( sel,wt,cin,s2,s1,s0,clk :IN STD_LOGIC;--sel.wt选择输入AB,s2.s1.s0选择逻辑运算,clk时钟 din:IN STD_LOGIC_VECTOR(1 DOWNTO 0);--因为按键不够 将输入8位2进制通过din来分别 d:IN STD_LOGIC_VECTOR(3 DOWNTO 0); --输入din01时d置入低4位 din10时d置入高4位 dig:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);--数码管位选 f:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ----数码管段位
cout:OUT STD_LOGIC); ---执行s2s1s0为100带进位加法时是否溢出 END alu;
ARCHITECTURE behave OF alu IS
SIGNAL z :STD_LOGIC_VECTOR(8 DOWNTO 0); ----s2s1s0为100时带进位加法结果暂存 SIGNAL s,scan :STD_LOGIC_VECTOR(2 DOWNTO 0);-- --scan是位选 s是逻辑运算指令暂存 SIGNAL rw :STD_LOGIC_VECTOR(1 DOWNTO 0); ----控制暂存AB信号
SIGNAL seg_r,f_r,d_r :STD_LOGIC_VECTOR(7 DOWNTO 0); ---d_r,f_r输入、结果输出暂存,seg_r数码管段位暂存 SIGNAL data_r :STD_LOGIC_VECTOR(3 DOWNTO 0); ----译码器输入暂存
begin
process(sel,wt,d,din)
variable a,b :STD_LOGIC_VECTOR(8 DOWNTO 0);
begin
rw<=sel & wt; s<=s2&s1&s0; z<=a+b+cin; f<=seg_r; dig<=scan;
if clk'event and clk='1' then -----数码管扫描 if(scan = \ scan <= \ else
scan <= scan + 1; end if;
case din is -----置入4位2进制 when \when \when others=>null; end case;
case rw is ---选择置入暂存器A或B when \when \when others=>null; end case;
case s is
when \清零
when \逻辑乘 when \逻辑加 when \逻辑异或 when \带进位输入的算术加法 when \左移一位 when \右移一位 when others=>null; end case;
case scan is ---扫描 when \when \when others=>null;
end case;
case data_r is ---数码管显示 when x\when x\when x\when x\when x\when x\when x\when x\when x\when x\when x\when x\when x\when x\when x\when x\when others=>null; end case;
end if;
end process; end behave; K[6]
时钟
LED1 K[9] K[10] K[11] K[12] COM COM COM K[7] K[8] DP
G F E D C
B A K[5]
K[4] K[3] K[1] K[2]
截图长度受限 故分段截图。
操作步骤:
第一步 拨开关 K[7]K[8] 01 为低4位 10为高4位---
第二步 拨开关 k[9]k[10]k[11]k[12] 置入4位2进制 ---
第三步 拨开关 k[1]k[2] 10:将置入的8位2进制放进暂存器A 01:将置入的8位2进制放进暂存器B 第四步 拨开关 k[3]k[4]k[5] 000清零 001逻辑乘(&)010逻辑加(或)011逻辑异或(异或) 100算术加 101 A左移一位 110 A右移一位 111无定义 进行算术加法时 若进位输入=1 则拨开关 k[6] 。
共分享92篇相关文档