FPGA学习杂记1

wire型、reg型变量:

        Verilog中何时要定义成wire型,何时定义成reg型?

        大体来说,变量要放在begin...end之内,则该变量只能是reg型;在begin...end之外,则用wire型。以下是具体情况:

                1:assign语句

                        例:assign   out = a;

                        out必须是线性,若为寄存器型则报错。

                2:元件实例化时必须用wire型

        寄存器型数据保持最后一次的赋值,而线型数据需要持续的驱动

`timescale  1ns/1ns

        写在所有仿真文件(.v)的代码首行,时间尺度、精度单位定义,时间尺度预编译指令,用来定义模块仿真时的时间单位和时间精度,不可被综合,但在可综合代码中也可以写,只是会在仿真时表达效果,而综合时会自动被综合器优化掉

parameter、localparam、#(parameter)

        parameter用在模块内部时和localparam作用类似,即定义一个参数常量

parameter       CNT1 = 8'd999;
localparame     CNT2 = 8'd999;

        #(parameter)定义在模块开始处,如下:

module  test
#(
    parameter   CNT = 8'd999 
 )

(
    input    a,
    input    b,

    output   c
);


...
...
...


endmodule

        #(parameter)同样是定义了一个参数常量,但在实例化时,可在上层文件上修改该参数常量的值,而不修改底层文件,如下:

test 
#(
    .CNT    (99)
)
test_inst

(
    .a      (a_inst),
    .b      (b_inst),
    
    .c      (c_inst)
);

        这样,例化后的参数常量CNT取值为99。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值