本帖最后由 UT发布 于 2025-4-8 13:46 编辑
软件版本:TD_5.6.4_Release_97693 操作系统:WIN11 64bit 硬件平台:适用安路(Anlogic)FPGA 1概述流水灯以及Helloworld实验是我们首次接触编程必做的实验。我们这里就要完成经典的流水灯实验。通常来说,能够独立完成本实验代表了编程者初步掌握了编程共计的使用和基本的编程能力,已经站在了编程世界的大门口了。 在完成本实验前,请确保已经完成前面的实验,包括已经掌握以下能力:
1.1 LED灯简介发光二极管,简称为LED,是一种常用的发光器件,通过电子与空穴复合释放能量发光,它在照明领域应用广泛。相比其它灯光源,LED效率高、寿命较长、功耗小、低碳环保、材料不易受到环境影响而相对稳定。 发光二极管与普通二极管一样具有单向导电性,在LED当中只有正极接入正极,负极接入负极它才会有电流流通进去。电流从LED阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。常用的是发红光、绿光或黄光的二极管。发光二极管的反向击穿电压大于5伏,使用时必须串联限流电阻以控制通过二极管的电流。 直插型发光二极管 贴片型发光二极管
1.2 硬件电路分析MLK-S200开发板共有7路LED,当FPGA输出为低电平时,LED点亮;当FPGA输出为高电平时,LED灯熄灭。 1.3 程序设计
本次实验目的为4个LED实现流水灯的效果,LED变换间隔时间需要基于系统时钟来计数,实现间隔时间的计时,除此之外,添加系统复位使程序恢复至默认状态,输出结果由4个LED灯亮灭显示。命名模块名为run_led,此模块需要两个输入的端口,分别为系统时钟和系统复位,输出为4位的 LED 端口
2 FPGA工程fpga工程的创建过程不再重复,如有不清楚的请看前面实验。 米联客的代码管理规范,在对应的FPGA工程路径下创建uisrc路径,并且创建以下文件夹 04_pin:放fpga的pin脚约束文件或者时序约束文件 05_boot:放编译好的bit或者bin文件(一般为空) 3 Modelsim仿真
3.1准备工作再次提醒,在进行modelsim仿真前,请提前完成,如果有不清楚的,以下3步请看前面课程内容: 对于向执行什么级别的仿真,就执行对应的HDL2Bit Flow 当 HDL2Bit Flow 运行至 Read Design 这一步时,可执行 Behavioral Simulation; 当 HDL2Bit Flow 运行至 Optimize RTL 这一步时,可执行 Post-RTL Simulation; 当 HDL2Bit Flow 运行至 Optimize Gate 这一步时,可执行 Post-Gate Simulation; 当 HDL2Bit Flow 运行至 Optimize Routing 这一步时,可执行 Post-Route Simulation。 以执行Behavioral Simulation仿真来说,只要执行Read Design 这一步,如下图 右击FPGA Flow中 Read Design,Rerun 3.2产生do文件仿真测试文件源码如下,对于led这种低速仿真,仿真精度可以设置为1ns,另外仿真阶段可以把间隔时间设置小一些,这样仿真速度就快了:
- `timescale 1ns / 1ns
-
- module tb_run_led();
-
- reg I_sysclk,I_RSTn;//时钟信号以及复位信号
- wire [1:0] O_LED;//仿真的LED 信号
-
- run_led#
- (
- .T_INR_CNT_SET(1000)//设置一个较小的时钟计数参数,可以大大缩小我们仿真需要的时间
- )
- run_led_inst(
- .I_sysclk(I_sysclk), //例化时钟接口
- .I_rstn(I_RSTn),//例化复位接口
- .O_led(O_LED)//例化led接口
- );
-
- initial begin
- I_sysclk <= 1'b0;//时钟信号的寄存器设置初值
- I_RSTn <= 1'b0;//复位信号的寄存器设置初值
- #100;//延时100个时间单位
- I_RSTn <= 1'b1;//复位恢复高点平,模拟复位完成
- end
-
- always #20 I_sysclk=~I_sysclk;//每过20个时钟周期,模拟的系统时钟信号进行一次翻转
-
-
- endmodule
复制代码
可以看到产生的do文件中,自动添加了仿真文件tb_run_led.v以及run_led.v程序路径。库路径可根据实际情况对应修改。 3.3启动modelsim仿真
设置运行100ms(如果运行时间太长可以修改小一些) 4下载演示4.1 硬件连接(该教程为通用型教程,教程中仅展示一款示例开发板的连接方式,具体连接方式以所购买的开发板型号以及结合配套代码管脚约束为准。) 请确保下载器和开发板已经正确连接,并且开发板已经上电(注意JTAG端子不支持热插拔,而USB接口支持,所以在不通电的情况下接通好JTAG后,再插入USB到电脑,之后再上电,以免造成JTAG IO损坏) 4.2 程序下载选择bit文件 4.3 运行结果(该教程为通用型教程,教程中仅展示一款示例开发板的上板现象,具体现象以所购买的开发板型号以及配套代码上板现象为准。)
|