一、实验目的
(1)学习 Quartus Prime 、Platform Designer、Nios II SBT 的基本操作;
(2)初步了解 SOPC 的开发流程,基本掌握 Nios II 软核的定制方法;
(3)掌握 Nios II 软件的开发流程,软件的基本调式方法。
二、实验内容
学习 Quartus 、Platform Designer、Nios-II SBT 的基本操作;初步了解 SOPC 的开发流程,基本掌握 Nios-II 软核的定制方法;掌握 Nios-II 软件的开发流程,软件的基本调试方法。
并完成以下试验:
1、在DE2-115开发板上分别用Verilog和Nios软件编程两种方式完成LED流水灯显示,理解两种方式的差异;
三、实验步骤
1、实现流水灯
1、Verilog实现——功能:
第一秒:点亮第一个LED灯,LED灯亮1s
第二秒:熄灭第一个LED灯,点亮第二个LED灯,第二个LED灯亮1s
第三秒:熄灭第二个LED灯,点亮第三个LED灯,第三个LED灯亮1s
…
2、Verilog实现——设计:
首先肯定需要一个计数器来计时是否已经到1s了。每计时到1s,就说明这个灯已经亮了1s了,该下一个灯亮了,这里可以再用一个计数器来判断状态。
3、Verilog实现——代码:
module water_led (
clk,
rst_n,
leds
);
input clk;
input rst_n;
output [7:0] leds;
// 1s计时器
reg [25:0] cnt0;
wire add_cnt0;
wire end_cnt0;
always @(posedge clk or negedge rst_n)
begin
if (rst_n == 0)
begin
cnt0 <= 0;
end
else if (add_cnt0)
begin
if (end_cnt0)
cnt0 <= 0;
else
cnt0 <= cnt0 + 1;
end
end
assign add_cnt0 = 1;
assign end_cnt0 = add_cnt0 && cnt0 == 50_000_000 - 1; // 开发板的频率是50MHz,所以一秒钟会有50M个周期
// 应该第几个灯亮
reg [3:0] cnt1;
wire add_cnt1;
wire end_cnt1;
always @(posedge clk or negedge rst_n)
begin
if (rst_n == 0)
begin
cnt1 <= 3'b000;
end
else</