下冰雹 · 2022年03月04日

【安路 EG4S20 版本】基础实验设计与实现:实验1 流水灯

实验设计目标

  1. 通过编程轮流点亮8个LED灯,形成流水灯效果。
  2. 通过此实验熟练掌握在Anlogic TD中新建工程的方法。

实验设计思路

第一篇中已经介绍到,LED灯为高电平驱动点亮,即FPGA的对应IO输出“1”为点亮,输出“0”为熄灭,所以流水灯的实质就是“1”的流动,在寄存器内存储“0000_0001”这样一组数据,其中LSB(最低有效位)为“0”,随着每一次流水灯工作时钟的到来,整组数据循环右移一次,这样便实现了数据“1”从左向右的流水效果,通过I/O口将寄存器的值输送到LED显示出来,这样便实现了从左向右的流水灯效果。

功能模块图与输入输出引脚说明

流水灯工程包含顶层模块run_led与底层模块led8_module,图1.1是使用Tang生成的顶层原理图,图1.2是整个工程的模块功能图。下面介绍一下各主要引脚的功能:
image.png
图1.1 流水灯顶层文件原理图
image.png
图1.2 流水灯模块功能图

  1. CLK: 50MHz的系统基准时钟输入。将其每计数满5,000,000次,即每隔0.1秒,流水灯效果右移一次。
  2. RSTn:系统复位输入信号,低电平有效。复位后系统回到初始状态,内部计数器归零,LED7~LED1熄灭,LED0点亮。
  3. LED_Out:输出到LED灯,共有八位总线。当系统处于工作状态时,LED_Out[7:0]的值每隔0.1秒循环右移一位。

程序设计

图1.3是截取自底层模块led8_module的部分代码:
○ 10-12:参数及寄存器型信号声明。
○ 15-19:复位状态描述语句,复位后计数器Count归零,rLED_Out为“00000000”。
○ 20-22,28-29:这是一个计数器,当系统基准时钟CLK出现一个上升沿时,Count计数加1,当Count计数到4999999时,它将在CLK的下一个上升沿处置零。目的是产生一个10Hz的控制时钟,控制流水灯效果的变换时间。
○ 25-26:这是本次实验的重要程序,通过循环右移语句控制“1”在rLED_Out的8位数据间从左至右移动。
image.png
图1.3 流水灯实验核心代码

FPGA管脚配置

以下是Anlogic_FPGA开发板的IO Constraint,CLK时钟输入信号与Anlogic_FPGA开发板上的50MHz的晶振时钟相连;LED_Out[7:0]输出信号分别与开发板上的LED7~LED0相连;RSTn复位输入信号与开发板上的SW0相连,当SW0拨至DOWN时,系统复位。
set_pin_assignment { CLK } { LOCATION = R7; IOSTANDARD = LVCMOS33; }
set_pin_assignment { LED_Out[0] } { LOCATION = B14; IOSTANDARD = LVCMOS33; }
set_pin_assignment { LED_Out[1] } { LOCATION = B15; IOSTANDARD = LVCMOS33; }
set_pin_assignment { LED_Out[2] } { LOCATION = B16; IOSTANDARD = LVCMOS33; }
set_pin_assignment { LED_Out[3] } { LOCATION = C15; IOSTANDARD = LVCMOS33; }
set_pin_assignment { LED_Out[4] } { LOCATION = C16; IOSTANDARD = LVCMOS33; }
set_pin_assignment { LED_Out[5] } { LOCATION = E13; IOSTANDARD = LVCMOS33; }
set_pin_assignment { LED_Out[6] } { LOCATION = E16; IOSTANDARD = LVCMOS33; }
set_pin_assignment { LED_Out[7] } { LOCATION = F16; IOSTANDARD = LVCMOS33; }
set_pin_assignment { RSTn } { LOCATION = A9; IOSTANDARD = LVCMOS33; }

实验结果

复位信号RSTn接拨动开关SW0,当SW0拨至“DOWN”位置时,系统复位,开发板上开关SW0的指示灯熄灭,LED0点亮,LED7~LED1熄灭;当SW0拨至“UP”位置时,开发板上开关SW0的指示灯亮,LED7~LED0呈流水灯效果从左至右依次点亮,具体动态现象请自行观察。

思考与拓展

  • 图1.3中23-24行代码的含义是什么?这样设计有什么好处?
  • 请通过调整程序中的参数来调整流水灯变换的速度,实现1秒钟变换一个灯的效果。

END

文章来源:https://www.yuque.com/yingmuketang/01/he1g55

推荐内容

更多内容请关注走进FPGA专栏
推荐阅读
关注数
1614
内容数
27
本专栏将以【安路EG4S开发板】为例,从基础板卡信息及使用教程,基础实验设计与实现及综合性实验设计与实现带大家学习FPGA。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息