差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
快速上手step-mxo2-c [2021/07/16 15:05] anran |
快速上手step-mxo2-c [2021/11/24 14:27] (当前版本) haihang |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ==== 准备工作 ==== | + | ## 快速上手FPGA核心板 |
+ | |||
+ | ### 1. 准备工作 | ||
------ | ------ | ||
行 9: | 行 11: | ||
---- | ---- | ||
- | ==== 1 运行第一个例程 ==== | + | ### 2. 运行第一个例程 |
- | ------ | + | |
下面我们可以开始可编程逻辑的开发,我们以控制LED交替闪烁为例,完成自己的第一个程序: | 下面我们可以开始可编程逻辑的开发,我们以控制LED交替闪烁为例,完成自己的第一个程序: | ||
- 双击运行Diamond软件,首先新建工程:选择File →New →Project →Next {{ :diamond16.png |}} | - 双击运行Diamond软件,首先新建工程:选择File →New →Project →Next {{ :diamond16.png |}} | ||
行 21: | 行 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> | ||
+ | |||
+ | module template ( | ||
+ | input clk, //clk = 12mhz | ||
+ | input rst_n, //rst_n, active low | ||
+ | output led1, //led1 output | ||
+ | output led2 //led2 output | ||
+ | ); | ||
+ | |||
+ | parameter CNT_1S = 'd12_000_000 - 1; | ||
+ | parameter CNT_05S = CNT_1S>>1; | ||
+ | reg [23:0] cnt; | ||
+ | |||
+ | always @(posedge clk or negedge rst_n) begin | ||
+ | if (!rst_n) cnt <= 1'b0; | ||
+ | else if (cnt >= CNT_1S) | ||
+ | cnt <= 1'b0; | ||
+ | else cnt <= cnt + 1'b1; | ||
+ | end | ||
+ | |||
+ | wire clkdiv = (cnt>CNT_05S)? 1'b1 : 1'b0; | ||
+ | |||
+ | assign led1 = clkdiv; assign led2 = ~clkdiv; | ||
+ | |||
+ | endmodule | ||
+ | |||
+ | </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}} | ||
行 27: | 行 58: | ||
到这里完成了第一个程序流文件的生成,下面可以下载到FPGA中。 | 到这里完成了第一个程序流文件的生成,下面可以下载到FPGA中。 | ||
- | ==== 2 工程仿真==== | + | ### 3. 工程仿真 |
- | ------ | + | |
上面我们走了整个工程开发的过程,例程较为简单,对于复杂的工程开发需要预仿真和后仿真等,保证最终的程序设计逻辑和时序符合我们的设计要求。 | 上面我们走了整个工程开发的过程,例程较为简单,对于复杂的工程开发需要预仿真和后仿真等,保证最终的程序设计逻辑和时序符合我们的设计要求。 | ||
仿真软件很多,这里我们使用软件自带的Modelsim软件进行功能仿真: | 仿真软件很多,这里我们使用软件自带的Modelsim软件进行功能仿真: | ||
行 64: | 行 94: | ||
</code> | </code> | ||
+ | |||
- 然后在软件左侧Process栏,选择File List,找到LED_shining_tb.v(必须保存过),点击右键,选择Include for →Simulation {{ :diamond28.jpg |}} | - 然后在软件左侧Process栏,选择File List,找到LED_shining_tb.v(必须保存过),点击右键,选择Include for →Simulation {{ :diamond28.jpg |}} | ||
- 准备工作完成,我们选择Tools →SimulationWizard →Next, | - 准备工作完成,我们选择Tools →SimulationWizard →Next, | ||
行 71: | 行 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 |}} | ||
- | ### 3 下载程序到FPGA | ||
- | ------ | + | ### 4. 下载程序到FPGA |
专用的编程芯片已经集成到小脚丫开发板上,因此只需要一根Micro USB线和电脑相连,就可以完成供电和编程的功能,该MXO2-C版本在进行程序下载时与Lattice MXO2其它版本不同,将板卡与PC链接后,将被识别成“大容量存储设备”,你只需要将程序生成的.JED文件复制进入板卡之中,即可完成下载。 | 专用的编程芯片已经集成到小脚丫开发板上,因此只需要一根Micro USB线和电脑相连,就可以完成供电和编程的功能,该MXO2-C版本在进行程序下载时与Lattice MXO2其它版本不同,将板卡与PC链接后,将被识别成“大容量存储设备”,你只需要将程序生成的.JED文件复制进入板卡之中,即可完成下载。 | ||
行 91: | 行 121: | ||
\\ | \\ | ||
- | + | ### 5. STEP MXO2入门教程 | |
- | + | ||
- | ### 4 STEP MXO2入门教程 | + | |
- | + | ||
- | ------ | + | |
到这里我们了解了用Diamond软件进行开发的完整流程。 | 到这里我们了解了用Diamond软件进行开发的完整流程。 | ||
接下来我们开始[[STEP-MXO2入门教程]]一步一步进入可编程逻辑设计。 | 接下来我们开始[[STEP-MXO2入门教程]]一步一步进入可编程逻辑设计。 | ||