FPGA开发概括

FPGA的开发流程主要分为两部分(不考虑仿真),.v文件的编写和.xdc文件的编写,前者为程序文件后者为管脚约束文件。

程序文件

程序文件里实现的功能为每一秒实现两个led的亮灭变化,产生跑马灯的效果。
代码如下,注释也十分清楚。

module led_flash(input wire clk ,//定义一个输入的时钟信号input wire rst_n ,//定义一个按键复位信号output reg [1:0] led //定义两个led灯的电平信号);/*---计数器的定义---*/reg [27:0] cnt ;//定义一个28位的寄存器,用来存数,目标一秒变化一次,则需要计数到50M,对应一个28位的二进制数wire add_cnt ;//计数标志位wire end_cnt ;//清零计数标志位assign add_cnt = 1; assign end_cnt = add_cnt && cnt== 50000000 - 1; //只有当cnt=50M-1时,及计数时间已经到1S时,end_cnt才为1/*---计数器功能实现---*/always @(posedge clk or negedge rst_n)begin//当时钟上升沿或者复位信号下降沿时执行if(rst_n==1'b0)begincnt <= 'd0;end//检测到复位信号,计数器值归零else if(add_cnt)begin//恒成立if(end_cnt)cnt <= 'd0;//计数到目标值时归零elsecnt <= cnt + 1'b1;//正常加一计数end
end/*---led功能实现---*/always @(posedge clk or negedge rst_n)begin//当时钟上升沿或者复位信号下降沿时执行if(rst_n==1'b0)beginled <= 2'b10;检测到复位信号,led为二位二进制数10endelse if(end_cnt)beginled <= {led[0], led[1]};//计数到目标值时,调换led二位二进制数,实现led亮灭效果endelse beginled <= led; //计数未到目标值时,保持led的数值endendendmodule

约束文件

约束文件的作用就是对程序文件中定义的变量进行相应管脚的匹配。
代码如下

#时钟定义
create_clock -period 20.000 [get_ports clk]
set_property PACKAGE_PIN N18 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk]#按键定义
set_property PACKAGE_PIN P16 [get_ports rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]#管脚电平初始化
set_property PACKAGE_PIN P15 [get_ports {led[0]}]
set_property PACKAGE_PIN U12 [get_ports {led[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports {led[*]}]
set_property IOSTANDARD LVCMOS33 [get_ports clk]

其中时钟定义可有可无,额…我看的手册是这样说的,定义了会更好。
其中的代码无非就是两种,第一种为端口定义,例如:

set_property PACKAGE_PIN P15 [get_ports {led[0]}]

第二中为初始电平定义,例如:

set_property IOSTANDARD LVCMOS33 [get_ports {led[*]}]

第一种不同的是原理图上对应的管脚号,如上面的“P15”,“U12”,原理图如下。[ ]里面的就是程序文件中自己定义的变量名了。

第二种中的关键字就是“LVCMOS33”,它的含义是IO管脚的电平约束CMOS电压3.3V! [ ]里面的就是程序文件中自己定义的变量名了。

综合,布线,编译

代码都写好后就可以生成FPGA的烧录文件了,使用的编辑器为Vivado,接下来就是编译三部曲,也可以直接点击第三个,同时完成上面的功能。

下面是综合后的结构图,大家感受一下FPGA的魅力吧!
放大前:

放大后:(仅仅是输入部分)

接下来就是把生成的.bit文件烧录进FPGA了

成功下载后,FPGA上的两个led灯交替闪烁,至此,over!

注:此下载方法只是在线编译,断电重连后不会执行该代码,要想断电不丢失代码要进行固化下载。

【FPGA】【入门基础】一、FPGA实现跑马灯相关推荐

  1. FPGA入门基础介绍

    1.1 FPGA入门基础介绍 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA入门基础介绍: 5)结束语. 1.1.2 本节引言 "不积跬步,无以至千里 ...

  2. STM32F103五分钟入门系列(一)跑马灯(库函数+寄存器)+加编程模板+GPIO总结

    摘自:STM32F103五分钟入门系列(一)跑马灯(库函数+寄存器)+加编程模板+GPIO总结 作者:自信且爱笑' 发布时间: 2021-04-28 21:17:40 网址:https://blog. ...

  3. STM32入门开发--LED模块实现跑马灯

    1.案例描述 利用STM32F103ZE开发板实现控制LED灯实现跑马灯现象. 正在不断学习嵌入式开发中,博客还会持续更新,敬请关注! 2.开发环境 keil 5.14 + Windows 10 + ...

  4. [silverlight基础]仿文字连接跑马灯效果-高手绕道

    运行效果如下: 分析示意图: 代码:  1    <Canvas x:Name="a" Background="AliceBlue" MouseEnter ...

  5. STM32F103五分钟入门系列(八)SysTick滴答定时器+SysTick中断实现跑马灯

    学习板:STM32F103ZET6 往期博客: STM32F103五分钟入门系列(一)跑马灯(库函数+寄存器)+加编程模板+GPIO总结 STM32F103五分钟入门系列(二)GPIO的七大寄存器+G ...

  6. FPGA开发基础知识

    FPGA开发基础知识 FPGA介绍 FPGA硬件内部结构 FPGA开发流程 数字信号和模拟信号的定义 常用数据类型 IP核的使用 Verilog HDL基本语法 注意点 结束语 FPGA介绍 FPGA ...

  7. 干货丨FPGA零基础学习,入门必看!

    看到不少同学后台进行提问:FPGA如何入门?怎么学习?其实对于新人来说,FPGA的学习需要了解的东西还是非常多,下面IC修真院就带大家一起来了解一下吧. FPGA简介 FPGA普遍用于实现数字电路模块 ...

  8. 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础

    上篇文章 单片机入门学习四 STM32单片机学习一 跑马灯程序和创建工程 仅介绍了入门程序及其编译运行过程,下面开始对stm32的一些基础知识做一个记录. 1.stm32f103zet6(上篇问题3 ...

  9. FPGA流水灯和跑马灯

    FPGA流水灯和跑马灯 流水灯和跑马灯的区别: 流水灯具体实现: 跑马灯具体实现: 流水灯和跑马灯的区别: 流水灯顾名思义就是让 LED 如同流水一般,从无灯亮,到亮一个,再到亮二个,以此类推,亮 3 ...

最新文章

  1. angular初步认识一
  2. 《基于MFC的OpenGL编程》Part 1 A Primer
  3. ckks方案优化最好的_站群如何优化才能提高SEO效果?站群优化方案有哪些?
  4. 神州泰岳2050万元收买并增资奇点国际
  5. 换个角度思考勒索攻击事件
  6. 一份完整的建模文档需涵盖的模块与指标
  7. Python 数据结构与算法——引用计数
  8. 4.熟悉App Inventor 2编程界面
  9. 【故障处理】一次RAC故障处理过程
  10. Doors软件安装以及DXL入门
  11. 如何获得CSDN下载积分
  12. 新浪微博发布文章html,微博怎么发文章
  13. css 设置背景图一半_CSS背景颜色 背景图片 居中 重复 固定样式background经验篇
  14. 黑暗城堡(dijkstra算法)
  15. 基于Java的雷电游戏设计(含源文件)
  16. 初次来到博客园进行交流学习还请大家多指教!
  17. 数学中随机性和不确定性有何不同?
  18. OI中的组合数与二项式
  19. VGA成像原理与简单实现
  20. PostgreSQL TRANSACTION(事务)

热门文章

  1. TortoiseSVN日常使用指南(一)
  2. QT/C++从新手到老手系列之QT中级篇-李浩林-专题视频课程
  3. java原神抽卡器(可查询版本)
  4. 【历史上的今天】12 月 31 日:千年虫问题;DNA 计算之父出生;微机先驱 Cromemco 成立
  5. python画老虎_老虎证券量化API Python SDK
  6. 奔跑吧火柴人c语言开发,奔跑吧火柴人手游-奔跑吧火柴人2019最新版下载v4.8.6-Minecraft中文分享站...
  7. 12C DELETE FROM wri$_adv_sqlt_rtn_planWHERE task_id = :tid AND exec_name = :execution_name
  8. web前端工程师技能总结
  9. 无线家庭生活 教你如何设置无线路由器1
  10. android 百度语音 对话框,Android 通过调用系统接口使用如 谷歌语音、百度语音、讯飞语音等语音识别对话框的方法...