怎样使用Debussy+ModelSim快速查看前仿真波形
- 格式:pdf
- 大小:519.26 KB
- 文档页数:16
怎样使用Debussy+ModelSim快速查看前仿真波形
作者:未知 时间:2010-06-18 08:22:23 来自:网络转载
引子:ModelSim是HDL仿真软件,Debussy是波形查看软件;搭配使用,相当爽。此处所谓快速查看前仿真波形仅为抛砖引玉,大家不要拘泥于此。两款软件的功能都很强大,请自行研究。
注:本篇博文的软件环境为:Debussy 5.3v9 + Modelsim SE 6.5
配置篇
1 安装、和谐软件。略。
2 拷贝文件..\Novas\Debussy\share\PLI\modelsim_pli\WINNT\novas.dll至文件夹..\modeltech_6.5\win32。
3 取消文件..\modeltech_6.5\modelsim.ini的只读属性后,打开。
找到
view source
print?
1; Veriuser = veriuser.sl
替换为
view source
print?
1Veriuser = novas.dll
保存;关闭;设为只读。
配置完,以后就一劳永逸了。
实战篇
此处以一简单分频器为例。文件地图如下:
view source
print?
1│ rtl.f
2│ run.bat
3│ sim.do
4│
5└─rtl
6 clk_rst.v
7 divider.v
8 divider_tb.v
1 编写欲仿真的HDL文件:RTL级代码+Testbench代码。保存在文件夹rtl中。
(1)divider.v // RTL级代码模块
view source
print?
01`timescale1ns/10ps
02
03module divider(
05 input i_rst_n,
06
07 output o_clk
08);
09
10parameter U_DLY = 1;
11
12// log2(5) = 2.3219 <= 3
13reg[2:0] cnt_p; // 上升沿计数子14
15// 5位上升沿计数器: 0 ~ 4
16// 4 = 5 - 1
17always@ (posedge i_clk, negedge i_rst_n)
18begin
19 if(!i_rst_n)
20 cnt_p <= 0;
21 else
22 begin
23 if(cnt_p == 4)
24 cnt_p <= 0;
25 else
26 cnt_p <= #U_DLY cnt_p + 1'b1;
27 end
28end
29
30// log2(5) = 2.3219 <= 3
31reg[2:0] cnt_n; // 下降沿计数子32
33// 5位下降沿计数器: 0 ~ 4
34// 4 = 5 - 1
35always@ (negedge i_clk, negedge i_rst_n)
36begin
37 if(!i_rst_n)
39 else
40 begin
41 if(cnt_n == 4)
42 cnt_n <= 0;
43 else
44 cnt_n <= #U_DLY cnt_n + 1'b1;
45 end
46end
47
48
49reg o_clk_p; // 上升沿时钟输出寄存器 50
51// 输出上升沿时钟
52// 0 ~ 2 ↑-> 1
53// (2+1) ~ 4 ↑-> 0
54// 2 = 5>>1
55// 4 = 5 - 1
56always@ (posedge i_clk, negedge i_rst_n)
57begin
58 if(!i_rst_n)
59 o_clk_p <= 0;
60 else
61 begin
62 if(cnt_p <= 2) // 2 = 5>>1
63 o_clk_p <= 1;
64 else
65 o_clk_p <= 0;
66 end
67end
68
69reg o_clk_n; // 下降沿时钟输出寄存器 70
71// 输出下降沿时钟
73// (2+1) ~ 4 ↓-> 0
74// 2 = 5>>1
75// 4 = 5 - 1
76always@ (negedge i_clk, negedge i_rst_n)
77begin
78 if(!i_rst_n)
79 o_clk_n <= 0;
80 else
81 begin
82 if(cnt_n <= 2) // 2 = 5>>1
83 o_clk_n <= 1;
84 else
85 o_clk_n <= 0;
86 end
87end
88
89assign o_clk = o_clk_n & o_clk_p; // 按位与(作用:掩码) 90
91endmodule
(2)clk_rst.v // Testbench的时钟及复位模块
view source
print?
01`timescale1ns/10ps
02
03module clk_rst(
04 output reg i_clk,
05 output reg i_rst_n
06);
07