比较器的Verilog代码

在这个项目中,一个简单的2位 比较器 是在 Verilog 高密度脂蛋白。给出了真值表,K-Map和比较器的最小化方程。比较器的Verilog代码由ModelSim仿真,并给出了仿真波形。


比较器的Verilog代码


2位比较器的规格如下:

  • 输入:2位A和B用于比较
  • 输出:
    • A_greater_B:如果A高> 低等
    • A_equal_B:如果A = B,则为高,否则为低
    • A_less_B:如果为A,则为高<B else low
比较器的真值表:


A1
A0
B1
B0
A_greater_B
A_equal_B
A_less_B
0
0
0
0
0
1
0
0
0
0
1
0
0
1
0
0
1
0
0
0
1
0
0
1
1
0
0
1
0
1
0
0
1
0
0
0
1
0
1
0
1
0
0
1
1
0
0
0
1
0
1
1
1
0
0
1
1
0
0
0
1
0
0
1
0
0
1
1
0
0
1
0
1
0
0
1
0
1
0
1
1
0
0
1
1
1
0
0
1
0
0
1
1
0
1
1
0
0
1
1
1
0
1
0
0
1
1
1
1
0
1
0

K-Map表和比较器的相应方程式:



A_greater_B
A1A0
00

01

11

10
B1B0
00
0
1
1
1
01
0
0
1
1
11
0
0
0
0
10
0
0
1
0

A_greater_B = B0 B1 A0 + B1 A1 + A1 A0 B0
= A0 B0 (B1 + A1)+ + B1 A1



A_equal_B
A1A0
00


01


11


10
B1B0
00
1
0
0
0
01
0
1
0
0
11
0
0
1
0
10
0
0
0
1

A_equal_B = (B1 A1+A1 B1) (B0 A0+A0 B0)



A_less_B
A1A0
00


01


11


10
B1B0
00
0
0
0
0
01
1
0
0
0
11
1
1
0
1
10
1
1
0
0

A_less_B = A0 A1 B0 + A1 B1 + B1 B0 A0

在获得比较器输出的最小化方程后,很容易为比较器编写Verilog代码。

下面是比较器的Verilog代码:

 // FPGA projects using Verilog/ VHDL  
 // hzgifts.cn : FPGA projects, Verilog projects, VHDL projects
 // 2位比较器的Verilog代码   
 module 比较器(input [1:0] A,B, output A_less_B, A_equal_B, A_greater_B);  
 wire tmp1,tmp2,tmp3,tmp4,tmp5, tmp6, tmp7, tmp8;  
 // A = B output   
 xnor u1(tmp1,A[1],B[1]);  
 xnor u2(tmp2,A[0],B[0]);  
 and u3(A_equal_B,tmp1,tmp2);  
 // A less than B output   
 assign tmp3 = (~A[0])& (~A[1])& B[0];  
 assign tmp4 = (~A[1])& B[1];  
 assign tmp5 = (~A[0])& B[1]& B[0];  
 assign A_less_B = tmp3 | tmp4 | tmp5;  
 // A greater than B output   
 assign tmp6 = (~B[0])& (~B[1])& A[0];  
 assign tmp7 = (~B[1])& A[1];  
 assign tmp8 = (~B[0])& A[1]& A[0];  
 assign A_greater_B = tmp6 | tmp7 | tmp8;  
 endmodule   
 `timescale     10 ps/ 10 ps  
 // FPGA projects using Verilog/ VHDL  
 // hzgifts.cn  
 // Verilog testbench code for 2-bit 比较器   
 module tb_comparator;  
 reg [1:0] A, B;  
 wire A_less_B, A_equal_B, A_greater_B;  
 integer i;  
 // device under test  
 比较器 dut(A,B,A_less_B, A_equal_B, A_greater_B);  
 initial begin  
      for (i=0;i<4;i=i+1)  
      begin   
           A = i;  
           B = i + 1;  
           #20;  
      end   
      for (i=0;i<4;i=i+1)  
      begin   
           A = i;  
           B = i;  
           #20;  
      end   
      for (i=0;i<4;i=i+1)  
      begin   
           A = i+1;  
           B = i;  
           #20;  
      end   
 end   
 endmodule   

最后,在ModelSim中仿真Verilog代码和测试平台,并通过仿真波形验证比较器的运行。 

2位比较器的Verilog代码

通过观察波形,比较器的Verilog代码可以正常工作。 


推荐的 Verilog projects:
2. FIFO存储器的Verilog代码
3. 用于16位单周期MIPS处理器的Verilog代码
4. Verilog HDL中的可编程数字延迟计时器
5. 用于数字电路中基本逻辑组件的Verilog代码
6. 用于32位无符号除法器的Verilog代码
7. 用于定点矩阵乘法的Verilog代码
8. Verilog HDL中的车牌许可证识别
9. 提前进位乘法器的Verilog代码
10。 微处理器的Verilog代码
11。 4x4乘法器的Verilog代码
12 停车场系统的Verilog代码
13 使用Verilog HDL在FPGA上进行图像处理
14。 如何使用Verilog HDL将文本文件加载到FPGA中
15 交通信号灯控制器的Verilog代码
16。 FPGA上的闹钟的Verilog代码
17。 比较器设计的Verilog代码
18岁 D触发器的Verilog代码
19 Full Adder的Verilog代码
20 带testbench的计数器的Verilog代码
21 16位RISC处理器的Verilog代码
22 用于在FPGA上反跳按钮的Verilog代码
23。 如何为双向/输入端口编写Verilog Testbench
28。 解码器的Verilog代码
29。 复用器的Verilog代码
30岁  Verilog中的N位加法器设计
31。 Verilog和VHDL:通过示例解释
32。 FPGA上时钟分频器的Verilog代码
33。 如何在Verilog中生成时钟使能信号
34。 用于PWM发生器的Verilog代码
35岁 Verilog编码与软件编程
FPGA Verilog VHDL课程

1条评论:

热门FPGA项目