Verilog学习笔记(05)


参考:Verilog数字VLSI设计教程
硬件描述语言Verilog
Verilog HDL数字设计与综合
Verilog HDL 数字集成电路高级程序设计

6. 组合逻辑电路

当一个数字电路中的输出信号完全是由输入信号所决定时,这样的电路称之为组合电路

组合电路基本设计方式
在这里插入图片描述

1. 数据比较器

1位数据比较器

在这里插入图片描述在这里插入图片描述
Verilog设计代码如下:

module comp_1b(a,b,agb,aeb,alb);
input a,b;
output agb,aeb,alb;
wire agb,aeb,alb;
assign agb=a&(~b);
assign aeb=a^~b;
assign alb=(~a)&b;
endmodule

测试环境如下:

module comp_1b_tb;
  reg a,b;
  wire agb,aeb,alb;
  comp_1b U1(.a(a),.b(b),.agb(agb),.aeb(aeb),.alb(alb));
  initial 
  begin 
    a=1'b1;b=1'b1;
    #100 a=1'b0;
    #100 a=1'b1;b=1'b0;
    #100 a=1'b0;
    #100 b=1'b1;
    #200 $finish;
  end
endmodule

设计一个8位数据比较器
在这里插入图片描述

module  comp_8b(a,b,agb,aeb,alb);
  parameter w=8;
  input [w-1:0]a,b;
  output agb,aeb,alb;
  reg agb,aeb,alb;
  always@(a or b)
  if(a>b) {
   agb,aeb,alb}=3'b100;
  else if(a<b) {
   agb,aeb,alb}=3'b001;
  else {
   agb,aeb,alb}=3'b010;
endmodule
module comp_8b_tb;
  reg [7:0]a,b;
  wire agb,aeb,alb;
  comp_8b U3(.a(a),.b(b),.agb(agb),.aeb(aeb),.alb(alb));
  initial
  begin
        a=8'b00110101;b=8'b00110100;
    #100 a=8'b00110011;b=8'b00110011;
    #100 a=8'b00110011;b=8'b10110011;
    #100 a=8'b11110011;b=8'b01110011; 
    #100 a=8'b01100110;b=8'b01100110;
    #100 a=8'b00110000;b=8'b11000011;
    #100 a=8'b00111111;b=8'b00000000;
    #200 $finish;
  end
endmodule

2. 数据选择器

设计一个MUX2to1
在这里插入图片描述

module mux2to1(d_in,d_out,sel);
  input [1:0]d_in;
  input sel;
  output d_out;
  wire d_out;
  assign d_out=sel?d_in[1]:d_in[0];
endmodule

或者

module mux2to1_1(d_in,d_out,sel);
  input [1:0]d_in;
  input sel;
  output d_out;
  reg d_out;
  always @(d_in or sel)
  begin
    if(sel) d_out=d_in[1];
    else    d_out=d_in[0];
  end
endmodule
module mux2to1_tb;
  reg[1:0]d_in;
  reg sel;
  wire d_out;
  mux2to1 U2(.d_in(d_in),.d_out(d_out),.sel(sel));
   initial
   begin
     d_in=2'b10;sel=1'b0;
     #100 sel=1'b1;
     #100 d_in=2'b11;
     #100 sel
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值