学习日记

引用“特权同学”在其书中的文字,以激励自己:

理论很重要,实践更重要;理论与实践结合过程中更是需要多思考、多分析、多总结。

一个完整的项目大致应经过以下几步:

分析与综合:综合(synthesis)将RTL设计转变为由FPGA器件中的查找表LUT、触发器FF等各种由底层电路单元组成的网表;在此过程中,综合器会对设计进行优化

约束输入:需要较多的经验累积,表达了设计者期望满足的时序需求

led_flash项目过程:

这里使用的板子是Z7-Lite7010
新建工程完成后…
step1:设计Verilog项目-led_flash.v

module led_flash2(input wire      clk,input wire      rst_n,output  reg     [1:0]   led);//============================//internal singals//============================reg    [27:0]  cnt;  //0.25s counter---声明了一个计数器,用来计数时间,通过该计数器来控制其他逻辑!!wire       add_cnt;wire       end_cnt;//------------cnt--------------always @(posedge clk or negedge rst_n)begin       //往下到52行是计数器的实现代码if(rst_n == 1'b0)begin                        //每个复位时计数器保持为0,复位计数后,每个时钟周期计数器加一,当计数到最大值时,清零计数器并重新开始计数cnt <= 'd0;endelse if(add_cnt)beginif(end_cnt)cnt <= 'd0;elsecnt <= cnt+1'b1;end
endassign add_cnt = 1;
assign end_cnt = add_cnt && cnt == 10_000_000 - 1;
//-------------led--------------
always @(posedge clk or negedge rst_n)begin    // 此always块是led流水灯的操作,才复位时,led的最低位有效,每当计数器计数最大值的时候,led完成移位if(rst_n == 1'b0)begin                     //这里使用位拼接的方式来完成led的移位操作led <= 2'b10;  //reset stateendelse if (end_cnt)beginled <= {led[0],led[1]};endelse beginled <=led; //keep the stateendend
endmodule

step2:分析和综合检验代码是否有错误
step3:输入管脚约束–此处应该有两种约束方法,手动添加I/O管脚约束 或 代码完成约束

set_property -dict {PACKAGE_PIN U12 IOSTANDARD LVCMOS33} [get_ports {led[1]}]
set_property -dict {PACKAGE_PIN P15 IOSTANDARD LVCMOS33} [get_ports {led[0]}]
set_property -dict {PACKAGE_PIN N18 IOSTANDARD LVCMOS33} [get_ports clk]
set_property -dict {PACKAGE_PIN P16 IOSTANDARD LVCMOS33} [get_ports rst_n]

遇到的问题及解决方法:

(1)Vivado版本不匹配导致的管脚约束问题
学习手册上的编译环境是Vivado18.3,而笔者我使用的编译环境是Vivado19.2在编译管脚约束时,学习手册给的代码是:

##########clock define###################
#create_clock -period 20.000[get_ports clk]
#set_property PACKAGE_PIN N18 [get_ports clk]
#set_property IOSTANDARD LVCMOS33[get_ports clk]##########key define######################
#set_property PACKAGE_PIN P16[get_ports rst_n]
#set_property IOSTANDARD LVCMO33[get_ports rst_n]##########LED define######################
#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]

在编译时会发生奇怪的管脚约束不Connect的问题,

[DRC UCIO-1] Unconstrained Logical Port: 1 out of 5 logical ports have no user assigned specific location constraint (LOC). This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all pin locations. This design will fail to generate a bitstream unless all logical ports have a user specified site LOC constraint defined. To allow bitstream creation with unspecified pin locations (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks UCIO-1]. NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: led[1:0]、clk and rst_n.

在一顿手动操作都无果的情况下,参考达芬奇pro在Vivado19.2编译环境下编写管脚约束的代码进行改写,解决了该问题!

(2)下载验证时发生的Not Programmed
若能够成功生产Bitstream文件但在下载比特流时发生该问题可能的原因有以下:

板子坏了,这时候可以检查各个BIT的参数是否正常,此处参考:https://blog.csdn.net/woshiyuzhoushizhe/article/details/98207136

最起初选择开发板的时候没选对,emmmm就是我犯了如此愚蠢的错误

小白菜狗的第一篇记录学习Blog,一定要坚持下去呀~ 欢迎大家交流!
酱捏。

第一个FPGA项目:led_flash简介项目流程和项目中遇到的问题相关推荐

  1. FPGA之道——FPGA开发流程之项目方案与FPGA设计方案

    文章目录 前言 FPGA开发流程 背景知识的分析与研究 项目方案的设计与制定 写清楚项目背景 写清楚项目需求 写清楚方案框架 写清楚算法细节 确保逻辑完备性 确保实现无关性 确保书面易懂性 算法可行性 ...

  2. 【CV项目实战】纯新手如何从零开始完成一个工业级图像分割任务的整个流程?...

    大家好,欢迎来到专栏<CV项目实战>,在这个专栏中我们会讲述计算机视觉相关的项目实战,有大型的完整项目,也有精炼的核心算法实战. 本次主要讲述一个完整的图像分割项目的标准流程,涉及数据标注 ...

  3. 一个项目的整个测试流程

    最近一直在进行接口自动化的测试工作,同时对于一个项目的整个测试流程进行了梳理,希望能对你有用~~~ 需求分析: 整体流程图: 需求提取 -> 需求分析 -> 需求评审 -> 更新后的 ...

  4. 一个项目的简单开发流程——需求、数据库、编码

    关于一个项目的简单开发流程 前言:从11月8号开始到11月12号我们小组使用html+easyUI+ashx+异步,开发了一个简易的网 站,也就是简单的门户网站,下面我就将我们这几天开发中遇到的一些问 ...

  5. vhdl7我学习得第一个fpga项目——倒计时显示

    之前也编写过fpga程序,但是那都相当于一个子程序,我们知道fpga是模块化设计,自顶向下的构造.那么今天学会了第一个fpga项目:倒计时显示. 1.功能: 1)开关控制计数器工作. 当开关作用,le ...

  6. 一个小项目了解机器学习基本流程(附源码)

    研一机器学习小白开始写博客记录学习了!请各位CSDN大佬多多指教[抱拳] 读书笔记1 <Python Machine Learning Blueprints> Alexander T.Co ...

  7. 承接一个外包开发项目后,开发流程以及如何做好。

    从2012年创业至今先后承接了几个小的软件开发项目,此贴仅仅是以个人经验为基础做的总结,欢迎大家可以讨论. 1.项目接洽 这个过程主要是和客户洽谈,了解客户大概需求并且为客户回馈信息.通俗的就是说首先 ...

  8. FPGA之道(20)FPGA设计的上板调试与项目总结

    文章目录 前言 FPGA设计的上板调试 "实践是检验真理的唯一标准" 如何解决问题 如何找到问题 "时间是检验真理的第二标准" 项目总结.备份与后期维护 前言 ...

  9. 软件项目开发流程以及人员职责 实行软件工程项目管理: ▲ 项目经理(负责人):项目经理(负责人)对整个项目负完全责任,是指导、控制、管理和规范某个软件和软/硬件系统建设的人,项目经理(负责人)是最终

    转载自csdn(danieldaniel19851023的专栏) 软件项目开发流程以及人员职责 实行软件工程项目管理: ▲ 项目经理(负责人):项目经理(负责人)对整个项目负完全责任,是指导.控制.管 ...

  10. “口袋小食” web 商城项目-栏目简介

    背景 大三的暑假学校安排了去中软国际昌平校区做项目,在两周时间内开发一个叫"口袋小食"的web商城,当然这个项目不会投入实际使用, 只是用来练手的... 前端的静态页面和数据库表大 ...

最新文章

  1. 如何在同一台电脑上多个账户同时登陆MSN
  2. 从数仓到数据中台,谈技术选型最优解
  3. 为在innodb中什么主键用auto_increment效率会提高
  4. boost::statechart模块实现状态迭代测试
  5. 智能合约语言 Solidity 教程系列8 - Solidity API
  6. JavaScript学习笔记:AJAX基础
  7. 详细剖析linux的内存管理方式(分段式、分页式、段页式),以及进程状态的具体关系
  8. 如何在类的外部修改类中的私有数据成员
  9. Silverlight 密码框 Focus
  10. 读书节第二日丨数据大咖来荐读,互动荐书赢好礼!
  11. iOS的GIF动画效果实现
  12. UIBlock 按钮图片设置
  13. LitePal使用详解
  14. 材料成型及控制工程学计算机吗,材料成型及控制工程
  15. Pycharm工具下的数据可视化(图形绘制)
  16. UVALive 5713 Qin Shi Huang's National Road System(次小生成树)
  17. 混迹职场,人际关系很重要
  18. MySQL小数数据类型
  19. IT项目验收规范参考
  20. 使用nexus搭建maven私服(一)安装启动

热门文章

  1. QFN封装芯片手工焊接方法
  2. nuxt.js项目打包上传服务器pm2启动各种问题
  3. 解决Android手机人民币符号--¥显示问题
  4. 用八类网线钳和剥线刀做网线水晶头
  5. (超详细)张正友标定法原理及公式推导
  6. Linux上Meson安装及使用
  7. 动词变名词的变化规则_英语单词词性转换规则大全
  8. stata基础--异方差检验和处理
  9. 毕业后,重装电脑系统,我的资料备份
  10. 网络看不到计算机和设备,网络发现已关闭,网络计算机和设备不可见。请启用网络和共享中心中的网络发现。解决方法...