仿真设计举例.doc

仿真设计举例.doc

ID:57674672

大小:25.00 KB

页数:7页

时间:2020-08-31

仿真设计举例.doc_第1页
仿真设计举例.doc_第2页
仿真设计举例.doc_第3页
仿真设计举例.doc_第4页
仿真设计举例.doc_第5页
资源描述:

《仿真设计举例.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1.4位加法器的ModelSim仿真设计新建一个名为adder4,v的源文件,源代码如下:moduleadder4(COUT,SUM,A,B,CIN);input[3:0]A,B;inputCIN;output[3:0]SUM;outputCOUT;assign{COUT,SUM}=A+B+CIN;endmodule接下来需要编写4位加法器的测试文件test_adder4.v源代码如下://‘timescale1ns/1nsmoduletest_adder4;wire[3:0]SUM;wireCOUT;reg[3:0]A,B;regCIN;initialbeginA=4;B=2;CIN=1;

2、#100A=12;B=8;CIN=0;#100A=10;B=8;CIN=0;endadder4m(.COUT(COUT),.SUM(SUM),.A(A),.B(B),.CIN(CIN));endmodule2.十进制计数器的ModelSim仿真设计counter_10源代码如下:modulecounter_10(clk,clr,c,out);inputclk,clr;outputc;output[3:0]out;regc;reg[3:0]out;always@(posedgeclkornegedgeclr)beginif(!clr)beginout[3:0]<=0;c<=0;endelseb

3、eginif(out[3:0]==9)beginc<=1;out[3:0]<=0;endelsebeginout[3:0]<=out[3:0]+1;c<=0;endendendendmodulecounter_10_tp.v是testbench文件,用来测试验证十进制计数器,代码如下:‘timescale1ns/1nsmodulecounter_10_tp;regclk,clr;wirecout;wire[3:0]cnterout;counter_10counter10(.clk(clk),.clr(clr),.c(cout),.out(cnterout));always#5clk=~clk

4、;initialbeginclk<=0;clr<=0;#10clr<=1;#30clr<=0;#40clr<=1;#2000$stop;endendmodule3.Quartus8.0新建一个工程,然后编写两个文件如下: 顶层文件“count4.v”源码为:modulecount4(clk,reset,out);    //4位计数器模块      input      clk,reset;      output[3:0] out;           reg[3:0]    out;      always@(posedgeclk)         begin            if

5、(reset)               out<=0;            else               out<=out+1;         endendmoduleModelSim仿真用到的测试文件“count_tp.v”源码为:(注意,该文件不加入工程中)`timescale1ns/1ns                 //定义时延单位1ns和时延精度为1ns(即精确到1ns)modulecount_tp;                 //测试模块      reg      clk,reset;       //输入激励信号定义为reg型      wire[3

6、:0]out;             //输出信号定义为wire型      parameterDELY=100;      count4mycount(.clk(clk),.reset(reset),.out(out));  //调用测试对象count4      always#(DELY/2)clk=~clk;  //产生时钟波形      initial                    //激励波形定义          begin                  clk=0;                  reset=0;                  #DELY 

7、    reset=1;                  #DELY     reset=0;                  #(DELY*20)$finish;           end      initial$monitor($time,,,"clk=%dreset=%dout=%d",clk,reset,out);//结果显示endmodule4.简单的测试设计实例化用户设计,然后提供相应的激

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。