4.3 Verilog练习(1)

以后所有和FPGA相关的开发环境都为Vivado

目录

练习一.简单的组合逻辑设计

练习二. 简单时序逻辑电路的设计

练习三. 利用条件语句实现较复杂的时序逻辑电路

练习四. 设计时序逻辑时采用阻塞赋值与非阻塞赋值的区别

 


练习一.简单的组合逻辑设计

这是一个可综合的数据比较器,很容易看出它的功能是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。在Verilog HDL中,描述组合逻辑时常使用assign结构。注意equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格式。

// compare.v

`timescale 1ns / 1ns
/*
1. `timescale 1ns / 1ps,含义为:时延单位为1ns,时延精度为1ps。
​2. 在编译过程中,`timescale会影响其后面所有模块中的时延值,直至遇到另一个`timescale指令或`resetall指令。
3. 当一个设计中的多个模块带有自身的`timescale编译指令时,模拟器将定位在所有模块的最小时延精度上,并且所有时延都相应地换算为最小时延精度。
*/
module compare(a,b,equal);
    input a,b;
    output equal;
    
    assign equal=(a==b)?1:0;
    
endmodule
// simu_compare.v

`timescale 1ns / 1ns
module simu_compare;
    reg a,b;
    wire equal;
    initial
    begin
        a=0;
        b=0;
      #100 a=0;b=1;
      #100 a=1;b=1;
      #100 a=1;b=0;
      #100 $stop;
     end     
     compare u1(.equal(equal),.a(a),.b(b));
endmodule

 

练习二. 简单时序逻辑电路的设计

在Verilog HDL中,相对于组合逻辑电路,时序逻辑电路也有规定的表述方式。在可综合的Verilog HDL模型,我们通常使用always块和 @(posedge clk)或 @(negedge clk)的结构来表述时序逻辑。下面是一个1/2分频器的可综合模型。

//half_clk.v

`timescale 1ns / 1ps
module half_clk(reset,clk_in,clk_out);
    inp
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值