FPGA 学习小组
直播中

alexdos

6年用户 804经验值
擅长:可编程逻辑 电源/新能源 嵌入式技术 模拟技术
私信 关注

【FPGA学习】Verilog HDL 语言的描述语句之数据流建模形式

  Verilog HDL 中的数据流建模形式一般用连续赋值语句来实现。Verilog HDL 中有两种形式的赋值方式:连续赋值和过程赋值。其中过程赋值用于顺序行为建模,而组合逻辑电路的行为最好使用连续赋值语句建模。
  连续赋值语句将值赋给线网(连续赋值不能为寄存器赋值),它的格式如下:
  1.   assign LHS_target = RHS_expression;//定义格式
  2.   //例子
  3.   wire [3:0] Z, Preset, Clear; //线网说明
  4.   assign Z = Preset & Clear; //连续赋值语句

  连续赋值的目标为 Z,表达式右端为“Preset & Clear”,连续赋值语句中的关键词为assign。只要在右端表达式的操作数上有事件(事件为值的变化)发生时,连续赋值语句即被计算,如果结果值有变化,新结果就赋给左边的线网。在上面的例子中,如果 Preset 或 Clear变化,就计算右边的整个表达式。如果结果变化,那么结果即赋值到线网 Z。
QQ截图20180921092250.jpg
  如图 2-8 所示的是主从触发器。
  主从触发器用连续赋值语句实现的代码如下:
  1.   module MSDFF_DF (D, C, Q, Qbar) ;
  2.   input D, C;
  3.   output Q, Qbar;
  4.   wire NotC, NotD, NotY, Y, D1, D2, Ybar, Y1, Y2 ;
  5.   assign NotD = ~ D;
  6.   assign NotC = ~ C;
  7.   assign NotY = ~ Y;
  8.   assign D1 = ~ (D & C) ;
  9.   assign D2 = ~ (C & NotD) ;
  10.   assign Y = ~ (D1 & Ybar ) ;
  11.   assign Ybar = ~ (Y & D2) ;
  12.   assign Y1 = ~ (Y & NotC ) ;
  13.   assign Y2 = ~ (NotY & NotC) ;
  14.   assign Q = ~ (Qbar & Y1) ;
  15.   assign Qbar = ~ (Y2 & Q) ;
  16.   endmodule


更多回帖

发帖
×
20
完善资料,
赚取积分