打印
[Verilog HDL]

Verilog指令_assign用法

[复制链接]
2658|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaochy1126|  楼主 | 2022-2-27 18:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

一、引入语法的概念

 1、只有寄存器类型的信号才可以在always和initial 语句中进行赋值,类型定义通过reg语句实现。
  2、always 语句是一直重复执行,由敏感表(always 语句括号内的变量)中的变量触发。
  3、always 语句从0 时刻开始。
  4、在begin 和end 之间的语句是顺序执行,属于串行语句。


二、总结下几种assign用法:

1.作为信号量输出,通过寄存器连续赋值

output [3:0]oLED;


//internal signal


reg [3:0]sr_LED; //用独热码表示LED亮灯位置。


assign  oLED[3:0] = ~ sr_LED[3:0]; //向LED灯接口输出信号。

2.作为信号量输出,通过寄存器拼接数据位实现。


output [15: 0] oSI_DATA;


//internal signal

  reg [ 3: 0] s_HEX;

  reg [ 7: 0] s_SEGBINARY; // s_SEGBINARY[2] should be the DOT

  reg [ 3: 0] s_SEG_SEL;


assign oSI_DATA = {iLED_SEL,s_SEG_SEL,s_SEGBINARY};

3.作为信号量输出,通过判断条件,赋值给信号



output[ 1: 0] oSEG_STATE;

output        oCP_PLUSE;

wire s_CNTEQCYCLE;


parameter PARAM_7SEG_CYCLE = 32'd2500000;


reg [ 1: 0] sr_SEG_STATE;

reg [31: 0] sr_cnt;

reg         sr_cp_pluse;  

assign oSEG_STATE = sr_SEG_STATE;

assign oCP_PLUSE = sr_cp_pluse;


assign s_CNTEQCYCLE = ( sr_cnt == PARAM_7SEG_CYCLE ) ? 1 : 0;




4.作为输出信号量,通过输入信号量赋值给输出,同样可以输入信号量和寄存器组合逻辑,赋值给输出信号量。
input        iCLK50M;
input        iCP_PULSE;
input[15:0]  iSI_DATA;
output       oSI;
output       oCP;
reg [ 3: 0] sr_cnt;
reg [15: 0] sr_si_data;
reg sr_cp;
reg sr_en;
assign oSI = sr_si_data[15];
assign oCP = sr_en & iCLK50M;



三、对比输出寄存器变量和信号量

下面是功能相同但写法不同的两段代码:

第一段A

module assign_test_a (
                       clk,
                       lhold,
                       lholda
);

input clk;
input lhold;
output lholda;

reg lholda;

always @(posedge clk)
if (lhold)
lholda<=lhold;
else
lholda<=0;

endmodule


第二段B
module assign_test_b (
                       clk,
                       lhold,
                       lholda
);
input clk;
input lhold;
output lholda;

reg lholda_r;
  always @(posedge clk)
  if (lhold)
     lholda_r<=lhold;
  else
     lholda_r<=0;

assign  lholda=lholda_r;
endmodule



使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:这个社会混好的两种人:一是有权有势,二是没脸没皮的。

1025

主题

11271

帖子

25

粉丝