Verilog之功能模块的构建范例

功能模块的构建
经典构建格式举例
module test_dec(
  din,
  a0,
  b0,
  dout
);
//module接入口定义
input wire [2:0] din;
input wire [15:0] a0, b0;
output reg [7:0] dout;
//内部接线
wire [16:0] sum;
//例化
add u0_add(
  .in0(a0);
  .in1(b0);
  .sum(sum)
);
//赋值语句
always @(*) begin
  case(din)
  3'b000: dout = 8'h01;
  3'b001: dout = 8'h02;
  3'b010: dout = sum[7:0];
  3'b100: dout = 8'h04;
  default: dout = 8'h00;
  endcase
end
endmodule

在这里插入图片描述

根据bit位由高到低采用二选一选择器进行组合

  • 有符号数符号位扩展
    • 在加减过程中,默认无符号数进行数据运算,但是,其实是存在有符号的情况,需要人为进行符号位扩展
    wire [15:0] a, b;//signed nunber
    wire [16:0] out;
    assign out = {a[15], a} - {b[15], b};
    
  • 同步复位电路
    • 指的是必须在clk上升沿来到时才能进行复位
    always @(posedeg clk)begin
    if(!rstn)
      out <= 1'd0;
    else
      out <= din;
    end
    
  • 异步复位电路
    • 不考虑时钟上升沿,只要复位信号有效即可
    always @(posedeg clk or negedge rstn)begin
    if(!rstn)
      out <= 1'd0;
    else
      out <= din;
    end
    

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值