三种建模方式探索

来源:互联网 发布:ps cs6 for mac破解版 编辑:程序博客网 时间:2024/06/08 03:15

硬件描述语言建模时,除了可以用不同层次的基本描述方式建模外,还可以根据其对信号描述方式的不同划分为:数据流建模、行为建模、结构建模。


本文以二选一数据选择器为例。


一、二选一数据选择器的数据流建模

Verilog HDL代码:

module mux2to1_dataflow(a,b,s,f);   input a ,b,s;output f ;   assign f= s ? b : a ;endmodule

Testbench:

`timescale 1ns/1psmodule mux2to1_dataflow_tb;   reg a ,b,s;wire f ;   mux2to1_dataflow dut(.a(a),.b(b),.s(s),.f(f));   initial begina=0 ; b=0; s=0;#200      forever begin #20 a=0 ; b=0; s=0; #20 a=0 ; b=1; s=0; #20 a=1 ; b=0; s=0; #20 a=1 ; b=1; s=0; #20 a=0 ; b=0; s=1; #20 a=0 ; b=1; s=1; #20 a=1 ; b=0; s=1; #20 a=1 ; b=1; s=1; end   endinitial  #2000 $stop;endmodule

Modelsim仿真:



二、二选一数据选择器的行为建模

Verilog HDL代码:

module mux2to1_behaviour(a,b,s,f);      input  s,a,b;output reg f;always @ (*) begin      if (s)          f=a ;else          f=b ;     end endmodule

Testbench:

`timescale 1ns/1psmodule  mux2to1_behaviour_tb;      reg  s,a,b;wire  f;mux2to1_behaviour dut(.a(a),.b(b),.s(s),.f(f));  initial begina=0 ; b=0; s=0;#200      forever begin #20 a=0 ; b=0; s=0; #20 a=0 ; b=1; s=0; #20 a=1 ; b=0; s=0; #20 a=1 ; b=1; s=0; #20 a=0 ; b=0; s=1; #20 a=0 ; b=1; s=1; #20 a=1 ; b=0; s=1; #20 a=1 ; b=1; s=1; end   endinitial  #2000 $stop;endmodule

Modelsim仿真:



三、二选一数据选择器的结构化建模

Verilog HDL代码:

module mux2to1_structure(a,b,s,f);    input a , b ,s; output f;    wire sn , bs, asn ;     not u1(sn, s );  and u2(bs , b , s);     and u3(asn , sn ,a);      or u4(f , bs , asn);      endmodule

Testbench:

`timescale 1ns/1psmodule mux2to1_structure_tb;   reg a ,b,s;wire f ;   mux2to1_structure dut(.a(a),.b(b),.s(s),.f(f));   initial begina=0 ; b=0; s=0;#200      forever begin #20 a=0 ; b=0; s=0; #20 a=0 ; b=1; s=0; #20 a=1 ; b=0; s=0; #20 a=1 ; b=1; s=0; #20 a=0 ; b=0; s=1; #20 a=0 ; b=1; s=1; #20 a=1 ; b=0; s=1; #20 a=1 ; b=1; s=1; end   endinitial  #2000 $stop;endmodule

Modelsim仿真: