差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
快速上手step-mxo2-c [2021/09/13 22:17] gongyu [3. 工程仿真] |
快速上手step-mxo2-c [2021/11/24 14:27] haihang |
||
---|---|---|---|
行 23: | 行 23: | ||
- 选择Verilog Files(选择自己使用的硬件描述语言),Name填写LED_shining,然后点击New,这样我们就创建了一个新的设计文件LED_shining.v,然后我们就可以在设计文件中进行编程了{{ :diamond23.png |}} | - 选择Verilog Files(选择自己使用的硬件描述语言),Name填写LED_shining,然后点击New,这样我们就创建了一个新的设计文件LED_shining.v,然后我们就可以在设计文件中进行编程了{{ :diamond23.png |}} | ||
- 程序源码已经准备好,如下,将代码复制到设计文件LED_shining.v中,并保存。 | - 程序源码已经准备好,如下,将代码复制到设计文件LED_shining.v中,并保存。 | ||
+ | |||
<code verilog> | <code verilog> | ||
- | module LED_shining ( | + | |
- | input clk, //clk = 12mhz | + | module template ( |
- | input rst_n, //rst_n, active low | + | input clk, //clk = 12mhz |
- | output led1, //led1 output | + | input rst_n, //rst_n, active low |
- | output led2 //led2 output | + | output led1, //led1 output |
+ | output led2 //led2 output | ||
); | ); | ||
- | parameter CNT_1S = 12_000_000 - 1; //time 1S | + | parameter CNT_1S = 'd12_000_000 - 1; |
- | parameter CNT_05S = CNT_1S >> 1; //time 0.5S | + | parameter CNT_05S = CNT_1S>>1; |
+ | reg [23:0] cnt; | ||
- | reg [23:0] cnt; | ||
always @(posedge clk or negedge rst_n) begin | always @(posedge clk or negedge rst_n) begin | ||
- | if (!rst_n) cnt <= 1'b0; | + | if (!rst_n) cnt <= 1'b0; |
- | else if (cnt >= CNT_1S) cnt <= 1'b0; | + | else if (cnt >= CNT_1S) |
- | else cnt <= cnt + 1'b1; | + | cnt <= 1'b0; |
+ | else cnt <= cnt + 1'b1; | ||
end | end | ||
- | wire clk_div = (cnt>CNT_05S)? 1'b1 : 1'b0; | + | wire clkdiv = (cnt>CNT_05S)? 1'b1 : 1'b0; |
- | assign led1 = clk_div; | + | assign led1 = clkdiv; assign led2 = ~clkdiv; |
- | assign led2 = ~clk_div; | + | |
- | endmodule | + | endmodule |
</code> | </code> | ||
+ | |||
- 程序编写完成,需要综合,在软件左侧Process栏,选择Process,双击Synthesis Design,对设计进行综合,综合完成后Synthesis Design显示绿色对勾(如果显示红色叉号,说明代码有问题,根据提示修改代码),如图{{ :diamond24.jpg |}} | - 程序编写完成,需要综合,在软件左侧Process栏,选择Process,双击Synthesis Design,对设计进行综合,综合完成后Synthesis Design显示绿色对勾(如果显示红色叉号,说明代码有问题,根据提示修改代码),如图{{ :diamond24.jpg |}} | ||
- 通过综合工具,我们的代码就被综合成了电路,生成的具体电路,我们可以通过选择Tools → Netlist Analyzer查看(仅限Lattice的综合工具,第三方综合工具无法查看),如图{{ :netlist_analyzer.jpg |netlist_analyzer}} | - 通过综合工具,我们的代码就被综合成了电路,生成的具体电路,我们可以通过选择Tools → Netlist Analyzer查看(仅限Lattice的综合工具,第三方综合工具无法查看),如图{{ :netlist_analyzer.jpg |netlist_analyzer}} | ||
行 99: | 行 102: | ||
- 点击Next{{ :diamond32.jpg |}} | - 点击Next{{ :diamond32.jpg |}} | ||
- 点击Finish,等待仿真软件的自动运行{{ :diamond33.jpg |}} | - 点击Finish,等待仿真软件的自动运行{{ :diamond33.jpg |}} | ||
- | - ModelSim软件启动,可以直接查看testbench文件中变量的时序变化,想要看LED_shining 模块中的变量的时序,可以通过下图中的步骤添加信号至WAVE窗口。{{ ::led_shining.png |}} | + | - ModelSim软件启动,可以直接查看testbench文件中变量的时序变化,想要看LEDshining 模块中的变量的时序,可以通过下图中的步骤添加信号至WAVE窗口。{{ ::led_shining.png |}} |
- 在WAVE窗口仿真相应的时间长度,观察信号的时序{{ :diamond331.jpg |}} | - 在WAVE窗口仿真相应的时间长度,观察信号的时序{{ :diamond331.jpg |}} | ||