前言
在刚学习NiosII时,每次在Run As NiosII Hardware下方,看到Run As NiosII ModelSim就觉得很好奇,NiosII明明是嵌入式系統,怎么能用ModelSim仿真呢?
Nios II虽然是个嵌入式系统,但毕竟基于FPGA技术,所以比ARM这类hardcore多了使用ModelSim仿真的方式。这也是Altera四大天王(Quartus II、Nios II EDS、ModelSim-Altera、DSP Builder)中的三大天王首次同台演出。
Altera在Simulating Nios II Embedded Processor Designs文件中,有谈到如何用ModelSim-Altera对Nios II作仿真,不过一如以往,Altera的文件要在DE2能动,还是得做不少修改。
使用环境
Quartus II 7.2 SP3 + Nios II EDS 7.2 SP3 + ModelSim-Altera 6.1g + DE2(Cyclone II EP2C35F627C6)
Quartus II与SOPC Builder部分
第一步:建立一個最简单的Nios II系统
文件中的那个系统并不适合DE2,用了一定不能动,所以就自己建立一個最简单的Nios II系统。為了要简单,就先使用onchip memory与ledg与button就好,其他IP都先別用,以减少失败的因素。
第二步:JTAG UART设定
使用ModelSim-Altera仿真后,对于C的printf()要怎么显示呢?这要对JTAG UART做设定。
第三步:对PIO做初始值设定
Button本来是在runtime由user去決定,若你想在testbench就模拟user的按键,可在此设定,此步骤并非必须,只是demo可由此方式设定PIO的初始值。
第四步:在SOPC Builder设定ModelSim-Altera路径
Tools -> Options -> Category:HDL Simulator
第五步:产生能仿真的Nios II系统
记得要將『Simulation. Create project simulator files』打勾。
第六步:DE2_NIOS_ModelSim2.v / Verilog
-
-
-
-
-
-
-
-
-
- module DE2_NIOS_ModelSim2 (
- input CLOCK_50,
- input [3:0] KEY,
- output [8:0] LEDG
- );
-
- wire CPU_CLK;
- wire CPU_RESET;
-
- Reset_Delay delay1 (
- .iRST(KEY[0]),
- .iCLK(CLOCK_50),
- .oRESET(CPU_RESET)
- );
-
- SDRAM_PLL PLL1 (
- .inclk0(CLOCK_50),
- .c1(CPU_CLK)
- );
-
- nios_ii u0 (
- .clk(CPU_CLK),
- .reset_n(CPU_RESET),
- .in_port_to_the_button_pio(KEY),
- .out_port_from_the_ledg_pio(LEDG)
- );
-
- endmodule
25行
- SDRAM_PLL PLL1 (
- .inclk0(CLOCK_50),
- .c1(CPU_CLK)
- );
別被SDRAM_PLL吓到了,只是借用这个PLL产生100 Mhz的clock给Nios II用,你也可以自己重新产生一个100 Mhz的clock而不用SDRAM_PLL。
Quartus II与SOPC Builder部分已经完成,编译后可烧进DE2。
(责任编辑:admin) |