实验室新进了一块板子,正好我也需要学习硬件开发,于是先做了个小项目练练手,顺便纪念一下。
1.项目要求
1.流水灯有八个状态,使用开发板上的三个LED灯来完成相应状态的闪烁;
2.闪烁间隔为每秒闪烁一次;
3.有使能按键,即按下按键时灯开始闪烁,松开即灭;
2.工作环境
1.编辑器:Vivado 2016.4,使用Verilog进行编写
2.开发板:DIGILENT Genesys2
3.项目流程
1.打开Vivado,建立项目
1.首先,单击桌面上的图标,进入Vivado开发环境
2.点击creat new project,出现create a new vivado project对话框,点击next来创建一个新的工程
3.在 new project对话框中输入自定义的项目名,以及项目路径,我们的项目为流水灯,项目名定义为led_s
点击next,进入project type界面,此处我们选择RTL项目,即RTL级设计,可以自己添加源程序,仿真程序,约束程序。之后点击next。
4.因为我们的开发板的芯片型号为XC7K325T-FFG900-2,在输入框中搜索此芯片,出现两个符合的,此处我选用了第二种(应该没什么区别)。点击next。
5.最后出现确认框,点击finish,即可完成项目的创建。
2.源文件的添加
1.点击界面左侧Project Manager下的Add Sources,即可添加源文件
之后会让用户选择添加哪种文件的对话框:
constrains:添加约束文件;design sources:添加设计文件;simulation sources:添加仿真文件;
(后面的暂时没用到,以后了解了再说说吧。)
2.此时出现添加文件的界面,点击creat file创建文件,并将主程序文件名命名成与项目名相同的led_s,点击OK
3.出现文件列表界面,确认无误之后点击finish
之后点击OK,再点击YES完成默认设置,即可创建完毕
3.编写源文件
1.点击design source中的源文件led_s.v,即可进行源文件的编写,界面如下
2.语法什么的就不细说了,直接贴代码吧。
首先是主程序led_s.v:用的二段状态机,写的略微冗长一点,但是比较容易看懂。
// An 8-states flow led
//led_s.v
`timescale 1ns / 1ps
module led_shine(
input clk_in1_n,clk_in1_p,
input rst_n,
(* DONT_TOUCH= "{TRUE}" *) output reg [2: