背景:我本人没有怎么接触过FPGA,但是这次一上来就被要求做FPGA的工作,实在是让我感到无从下手,前前后后忙活了好几天才第一次上电成功,所以把整个经过整理了一下,以便方面后来人。

开发平台:Vivado 2015.2
FPGA :Xilinx Virtex-7系列芯片

一上来就碰到这种高端FPGA芯片,没有什么资料,至于下面的FPGA的板子也是自制的(上面没有按钮,没有数码管,只有2个led灯),所以感到无从下手。那么针对这种情况怎么办呢?下面将全面介绍一下。

//************************************************************//
1.时钟:时钟是驱动FPGA工作的关键,首先我们来看怎么引入时钟。

从图中可以看出,使用了ICS8543芯片,查看该芯片的datasheet,可以知道该芯片的输出为4对差分口,IO标准为LVDS,并且通过查看原理图可以知道Q3和Q3*是作为FPGA工作的时钟,此时记下在FPGA中的引脚。
//************************************************************//
2.建立工程:这一步网上有很多教程,我在这里就略过了
//************************************************************//
3.调用Clocking wizard:为了得到稳定的适合XilinxFPGA的时钟,需要使用Xilinx提供的一个IP核


选择IP Catalog

双击Clocking Wizard

设置外部时钟的输入频率,我这里是200M的时钟,由于时钟使用的是差分传输,所以我在这里选择了Differential clock capable pin

这里是填写输出时钟,根据需要选择即可

这里是对实例化的IP core的输出端口的重命名,方便自己记忆
//************************************************************//
4.使用IP Core:使用Vivado提供的例化模版在v文件中实例化



复制红框中的内容,粘贴到自己的工程文件中
//************************************************************//
5.编写代码:
在代码很简单,就是利用输出的25M时钟,做了一个分频,点亮一盏LED灯,由于我使用的平台没有外部按键,所以又调用一个VIO的IP core来做复位控制,关于VIO这个IP Core我会在以后的文章中提到。

module top(input clk_in1_p,input clk_in1_n,    output reg flag,output led);wire clk_25M,clk_10M;wire locked,rst_n;reg [31:0] cnt_r;    clk_wiz_0 instance_name(// Clock in ports.clk_in1_p(clk_in1_p),    // input clk_in1_p.clk_in1_n(clk_in1_n),    // input clk_in1_n// Clock out ports.clk_25M(clk_25M),     // output clk_25M.clk_10M(clk_10M),     // output clk_10M// Status and control signals.locked(locked));      // output locked always @ (posedge clk_10M, negedge rst_n) beginif(rst_n == 0)begincnt_r <= 0;endelse beginif (cnt_r == 32'b1111_1111_1111_1111_1111_1111_1111_1111) begincnt_r <= 0;endelse cnt_r <= cnt_r +1;endendalways @ (posedge clk_10M)beginif(cnt_r < 32'b1000_0000_0000_0000_0000_0000_0000_0000) flag <= 1;else flag <= 0;endvio_0 your_instance_name (.clk(clk_10M),                // input wire clk.probe_in0(cnt_r),    // input wire [31 : 0] probe_in0.probe_out0(rst_n),  // output wire [0 : 0] probe_out0.probe_out1(led));
endmodule

//************************************************************//
6.配置管脚:代码编写好之后,为了让FPGA能够工作,需要将module的输出输入管脚配置到实际的地方才能正常工作

打开Schematic

点击IO Ports

这里就是配置管脚的地方,可以看到我将clk_in1_p配置为了C25(由于是差分管脚的关系,Vivado能够自动识别,自动的把clk_in1_n配置为了C26),根据之前ICS8543的datasheet,IO std应该设置为LVDS。flag是我用来控制led灯的管脚,分配到了a16(不同板子位置不一样,这个需要查看原理图才能知道),至于还有一个名为“led”的引脚,这个大家可以暂时忽略,这个引脚是直接被VIO控制的,在以后会讲到。

7.生成bit文件:这就是最后一步了,虽然过程看起来简单,但是要成功的来到这一步也是很困难的,如果一切顺利的话,这里就能够生成bit文件了(因为没有配置vio核,所以如果直接用我的代码的话,是会报错的,需要删除vio,并且对相应的输入输出进行修改)

这里吐槽一下Vivado,我用的电脑是I7-4790+16G内存+SSD,从头跑一次也要快10分钟的时间,简直太慢了。

Vivado+FPGA学习之第一次上电相关推荐

  1. FPGA 学习笔记:Vivado 2020.2 MicroBlaze MIG 测试 DDR3 篇尾

    FPGA 学习笔记:Vivado 2020.2 MicroBlaze MIG 测试 DDR3 篇一 FPGA 学习笔记:Vivado 2020.2 MicroBlaze MIG 测试 DDR3 篇二 ...

  2. ZYNQ之FPGA学习----Vivado软件使用

    1 Vivado软件使用 Vivado Design Suite 是 Xilinx 公司的综合性 FPGA 开发软件,可以完成从设计输入到硬件配置的完整FPGA 设计流程.Vivado学习使用版本为V ...

  3. FPGA 学习笔记:Vivado 2018.2 MicroBlaze Uartlite 配置

    前言 Vivado 版本: Vivado 2018.2 + Vivado HLS 2018.2, Vivado HLS 2018.2 用于 SDK 开发,C语言开发 创建基于MicroBlaze的 [ ...

  4. 基于vivado(语言Verilog)的FPGA学习(3)——FPGA理论知识

    基于vivado(语言Verilog)的FPGA学习(3)--FPGA理论知识 文章目录 基于vivado(语言Verilog)的FPGA学习(3)--FPGA理论知识 1. FPGA介绍 1.1.F ...

  5. ZYNQ之FPGA学习----Vivado功能仿真

    1 Vivado功能仿真 阅读本文需先学习: FPGA学习----Vivado软件使用 典型的FPGA设计流程,如图所示: 图片来自<领航者ZYNQ之FPGA开发指南> Vivado 设计 ...

  6. FPGA学习日志——Risc-V架构的cpu设计

    FPGA学习日志 坚持每天写总结 2021.2.18 Risc-V学习 FPGA学习日志 前言 一.RISC-V是什么? 二.学习RISC-V的探索过程 1.<手把手教你设计CPU--RISC- ...

  7. VIVADO HLS 学习之路之图像的resize

    ** VIVADO HLS 学习之路之图像的resize ** 算下来接触vivado已经有半年了,学习fpga也满打满一年半了,零零碎碎的的笔记做过一些,但是记下了却没有复习,基本上等于没有.以后的 ...

  8. FPGA学习笔记之Altera FPGA使用JIC文件配置固化教程

    FPGA学习笔记之Altera FPGA使用JIC文件配置固化教程 很多做过单片机的朋友都知 道,我们在对MCU烧写完程序固件后,那么该程序固件就存储在了该MCU内部.即使MCU断电了再重新上电,程序 ...

  9. FPGA学习之路—接口(1)—URAT Verilog程序设计

    FPGA学习之路--URAT Verilog程序设计 UART(Universal Asynchronous Receiver Transmitter,通用异步收发器)是广泛使用的异步串行数据通信协议 ...

最新文章

  1. MPB:中南大学刘学端、马丽媛组-基于16S测序和RT-qPCR的硫化矿物表面微生物群落组成分析...
  2. JSP简单练习-EL表达式操作JavaBean
  3. java内存图怎么画,jvm内存模型怎么画?简单美观的模型图制作软件
  4. wpf 360软件管家_软件管家对比及推荐,避免全家桶的坑
  5. labview求n阶乘的和_求极限方法总结
  6. 从714里连续减去6减几次得0_数学干货 | 小学数学1—6年级基础知识整理 ,预习复习都能用...
  7. [笔记]极大极小过程的alpha-beta剪枝不可与记忆化搜索一起使用
  8. Mysql设置允许外网访问(图文)
  9. 苹果全面封杀Facebook:原因不能忍
  10. 通过线程监控socket服务器是否done机
  11. Github 用户喊话微软:放弃 ICE 吧,不然会失去我们的
  12. python webservices_python实现webservices接口并调用
  13. 巧用BroadcastReceiver实现开机“自”启动
  14. 15分钟破解保险箱!美国小哥200美元自制开锁机器人
  15. 首次 LFS 搭建全过程
  16. 局域网常见问题解决方案之你可能没有权限使用网络资源无法访问网上邻居
  17. PS暂存盘已满怎么办
  18. html设置成电脑桌面背景,电脑桌面背景怎么更换 电脑桌面背景不能设置怎么办...
  19. qt 子线程(多线程)更新gui的几种方法
  20. 苹果开发者账户续费 支付授权失败(终极解决方案)

热门文章

  1. python开源web项目-30 个惊艳的Python开源项目
  2. 通配符及反掩码的详解 (网络中ACL )
  3. HBase安装(1.2.6版)【一篇就够】
  4. HEVC 编解码详解
  5. H3CSE路由-BGP增强配置(二)
  6. Valgrind——memcheck内存泄漏分析
  7. 是的,入职中软一个月(外包华为)就离职了!
  8. FT232USB串口通信线序
  9. 记一次与第三方ROM上的360软件全家桶的斗智斗勇难忘的经历
  10. oracle的rowid和rownum,Oracle的ROWID和ROWNUM