Verilog实例讲解
【例 3.1】4 位全加器 module adder4(cout,sum,ina,inb,cin); output[3:0] sum; output cout; input[3:0] ina,inb; input cin; assign {cout,sum}=ina+inb+cin; endmodule
【例 3.2】4 位计数器 module count4(out,reset,clk); output[3:0] out; input reset,clk; reg[3:0] out; always @(posedge clk) begin if (reset) out《=0; //同步复位 else out《=out+1; //计数 end endmodule
【例 3.3】4 位全加器的仿真程序 `timescale 1ns/1ns `include “adder4.v” module adder_tp; //测试模块的名字 reg[3:0] a,b; //测试输入信号定义为 reg 型 reg cin; wire[3:0] sum; //测试输出信号定义为 wire 型 wire cout; integer i,j; adder4 adder(sum,cout,a,b,cin); //调用测试对象 always #5 cin=~cin; //设定 cin 的取值 initial begin a=0;b=0;cin=0; for(i=1;i《16;i=i+1) #10 a=i; //设定 a 的取值 end 程序文本 - 2 - initial begin for(j=1;j《16;j=j+1)#10 b=j; //设定 b 的取值 end initial //定义结果显示格式 begin $monitor($time,,,“%d + %d + %b={%b,%d}”,a,b,cin,cout,sum); #160 $finish; end endmodule
【例 3.4】4 位计数器的仿真程序 `timescale 1ns/1ns `include “count4.v” module coun4_tp; reg clk,reset; //测试输入信号定义为 reg 型 wire[3:0] out; //测试输出信号定义为 wire 型 parameter DELY=100; count4 mycount(out,reset,clk); //调用测试对象 always #(DELY/2) clk = ~clk; //产生时钟波形 initial begin //激励信号定义 clk =0; reset=0; #DELY reset=1; #DELY reset=0; #(DELY*20) $finish; end //定义结果显示格式 initial $monitor($time,,,“clk=%d reset=%d out=%d”, clk, reset,out); endmodule
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !