文章总览:YuanDaiMa2048博客文章总览
【数字电路与逻辑设计】实验二 数值比较器
- 一、实验内容
- 二、设计过程
- (一)真值表
- (二)设计思路
- 三、源代码
- (一)代码说明:
- (二)代码内容:
- 四、仿真验证与实验结果
- (一)波形图
- (二)波形图说明
- (三)实验结果
- 五、全部实验
- 第一部分 组合逻辑
- 第二部分 时序逻辑
一、实验内容
使用 if 语句编写对两个 4 位二进制数进行比较的 VHDL 程序,其中 A 和 B 分别是参与比较的两个4 位二进制数,YA、YB、YC 是用来分别表示 A>B、A<B、A=B 的 3 个输出端。使用波形图仿真验证其功能。
二、设计过程
(一)真值表
- 注解:A,B为输入的两个四位二进制数
(二)设计思路
利用一位二进制数的比较原理,将四位二进制数从高位到低位进行比较,用if语句来实现。
三、源代码
(一)代码说明:
① A,B:输入,为两个待比较的4位二进制数。
② YA,YB,YC:输出,值为1时分别表示“A大于B”,“A小于B”和“A等于B”。
③ 利用一位二进制数的比较原理,利用for循环将A和B从高位到低位进行比较,在每一次循环中用if语句判断该位上两个数值的大小。
(二)代码内容:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity num_compare is
port(A,B:in std_logic_vector(3 downto 0);
YA,YB,YC:out std_logic);
end entity num_compare;
architecture behave of num_compare is
begin
process(A,B)
begin
for n in 3 downto 0 loop
if(A(n)=B(n))then
YC<='1';
YB<='0';
YA<='0';
next;
elsif(A(n)>B(n))then
YA<='1';
YB<='0';
YC<='0';
exit;
elsif(A(n)<B(n))then
YA<='0';
YB<='1';
YC<='0';
exit;
end if;
end loop;
end process;
end behave;
四、仿真验证与实验结果
(一)波形图
(二)波形图说明
由于输入的组合数量较多,因此只设置了16个情况,其中包含A>B,A<B,A=B的情况。
将A3,A2,A1,A0分别设置为40ns,30ns,20ns,10ns(起始值为0);
将B3,B2,B1,B0分别设置为10ns,20ns,30ns,40ns(起始值为0)。
(三)实验结果
如图所示,此程序可以正确实现数值比较器功能。
五、全部实验
第一部分 组合逻辑
- 实验一 8421 码和格雷码的转换
- 实验二 数值比较器
- 实验三 全加器
- 实验四 3 线-8 线译码器
- 实验五 表决器
第二部分 时序逻辑
- 实验一序列检测器
- 实验二计数器
- 实验三 8 位寄存器 74374