【学习笔记-FPGA】verilog语言中assign的使用

个人笔记。

assign在verilog语言中一般用于连接两个变量,将一个变量的值不断赋值给另一个变量,比如在顶层模块中调用另一模块的变量。

例:

///二级模块

module compile(

input                       i_clk,
input                       nrst,    

output [47:0]          o_sentence                             //input、output不声明类型的话,默认为wire型

);

reg [47:0] sentence;

assign       o_sentence[47:0]= sentence[47:0];           //左边的变量必须为wire型

endmodule

///顶层模块调用

wire [47:0] sentence;

compile compile_01(
   .i_clk(clk_50m),
   .nrst(nrst),    

.o_sentence(sentence[47:0])

);

如果需要用逻辑分析仪仿真的话,可以在输出仿真变量中写入sentence[47:0]。

如:

ila_0 ila_0_1(
   .clk(clk_50m),

    .probe0(sentence[47:0])

);

注意:连续赋值assign语句独立于过程块,所以不能在always过程块中使用assign语句

对于想在顶层模块中调用输入信号,则不需要使用assign,直接在顶层模块中写入即可,不过需要对它进行引脚约束。

例:想要调用i_sentence

///二级模块

module compile(

input                       i_clk,
input                       nrst,    

input                       i_sentence ,

output [47:0]          o_sentence                             //input、output不声明类型的话,默认为wire型

);

///顶层模块

module TOP(

input               i_clk,
input               nrst,  

input                i_sentence,   //可以在顶层模块中直接引入i_sentence,不过需要对它进行引脚约束

output              o_A

);

compile compile_01(
   .i_clk(clk_50m),
   .nrst(nrst),    

   .i_sentence(i_sentence),

   .o_sentence()

);

如果需要用逻辑分析仪仿真的话,可以在输出仿真变量中写入i_sentence。

如:

ila_0 ila_0_1(
   .clk(clk_50m),

    .probe0(i_sentence)

);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值