FPGA 板 与 PC 的接口
硬件上
USB接口 <->FT2232(有两个通道)
将 A 通道作为 JTAG,连接 到 (赛灵思/Spartan系列/Spartan-3E)的 jtag
将 B 通道作为 UART 使用 到 (赛灵思/Spartan系列/Spartan-3E)的 串口
软件上
jtag , 用 UrJTAG 工具访问 , 可用于 下载fpga镜像 到 FPGA
串口 , 用 一般的串口工具访问 , 可用于打印显示, 也可用于 数据输入(后面的xmodem)
从 rtl 到 可被 下载的文件 总览
ISE WebPACK 是赛灵思公司提供的 FPGA 综合开发环境,含有逻辑综合、布局布
线、配置等多种 FPGA 开发的必要功能。
逻辑综合
将硬件描述语言编写的程序代码转 换为门级电路网表的过程。
布局布线
将这个电路网表的逻辑门和网络映射到 FPGA 的逻辑单元和I/O 的过程
verilog 源文件 -> BIT
工具为 ISE Project Navigator
过程为 编译转换
BIT文件中包含 FPGA 配置信息
BIT -> SVF
工具为iMPACT
过程为 将配置信息 转换为 SVF文件
SVF 格式文件包含JTAG 操作
如果我们最终不用jtag接口,而是用其他接口, "BIT->SVF" 这个过程可能要改变或者省略
目前赛灵思的FPGA官方开发板 网络接口 可以 直接 接收 BIT 文件
verilog 源文件 -> BIT -> SVF , 该 SVF 用于 被 UrJTAG 加载到 FPGA 的 ram 中.
verilog 源文件 -> BIT -> MCS-> SVF , 该 SVF 用于 被 UrJTAG 加载到 FPGA 的 rom 中.
写入 rom 和 写入 ram的 jtag 时序肯定不一样
之后我只关注 "verilog 源文件 -> BIT -> SVF" , 即 生成 "ram相关文件"的过程
- 从 rtl 到 BIT 文件
打开ISE Project Navigator
1.新建工程
2.输入新工程路径和源程序类型(HDL)
3.选择目标设备(FPGA芯片类型)
4.添加源RTL程序 // 非自动化过程
// 在代码输入以及设计分析阶段,Vivado 软件会检查代码,如果代码出现语法错误,那么 Vivado 软件将
会给出相关错误提示
5.添加只声明未定义的接口,该接口由xlinx的IDE提供
6.配置时钟
7.配置 Memory Type // Block Memory Generator 对话框
8.指定 Memory 初始化文件
// 初始化文件需要设定块 RAM 初始值的COE 文件格式。
// core 文件 是 .c 生成的程序文件
// 指定 COE 文件后,ROM内容即被设定为初始值。
// AZPR EvBoard 电源接通或复位时,AZ Processor 从 ROM 读取并执行的程序,就是这里的 COE 文件包含的程序。
// azprasm led.asm -o led.bin --coe led.coe
A.逻辑综合 // 自动化过程
// 选中 chip_top,双击 ISE Project Navigator 窗口左下方的Synthesize-XST
// 在 FPGA 设计中,综合(Synthesis)就是将 RTL 设计转变为由 FPGA 器件中的查找表(LUT)、触发器(FF)等
// 各种底层电路单元所组成的网表,在这个过程中综合器也会对设计进行优化,例如,删除多余的逻辑等等
B.制作时序约束文件 // 非自动化过程
//布局布线时需要一个用来设定各种约束的文件。
//约束包括模块输入输出信号线和 FPGA 引脚的对应关系、时序、面积等。
//记载着这些约束信息的文件称为约束文件。
//我们制作的约束文件命名为 AZPR_EvBoard.ucf,用纯文本格式编写。
// 约束文件至少要记述两种约束信息
// 一个是输入时钟的时序约束,
// 另一个是 FPGA引脚相关约束。引脚映射
// 综合完成后,我们需要进行约束的输入。
// 约束表达了设计者期望满足的时序要求,规范了设计的时序行为,
// 并在综合、实现阶段来指导工具进行布局、布线,
// 工具会按照你的约束尽量去努力实现以满足时序要求,并在时序报告中给出结果。
// 常用的约束包括时序约束、引脚约束等等
C.布局布线 // 自动化过程
// Generate Programming File上右键 单击并选择 Process Properties
// 打开 Process Properties 窗口,选择左侧 Category 中的 Startup Options。在此处设置 FPGA Start-Up Clock
// 直接对 FPGA 进行配置的话,在 Value 里填写 JTAG Clock
// 双击 Generate Programming File 后,会在工程文件夹中生成 BIT 文件
// 因为顶层模块名为 chip_top,生成的文件名为 chip_top.bit
- 从 BIT 文件 到 SVF 文件
iMPACT
//从 ISE iMPACT 窗口左上方的 iMPACT Flows 中双击 Boundary Scan,会在界面出现 "Right click device to select operations"
//Right click device to select operations 处单击右键
//选择Output File Type → SVF File → Create SVF File,开始生成 SVF 文件
下载 下载的文件 到 FPGA
打开 UrJTAG
设置 UrJTAG
cable jtagkey
detect
part 0
svf D:\sample.svf
// 该命令执行完,fpga就会跑起来
// 1. 芯片会被生成
// 2. "Memory 初始化文件" 配置中的 coe 被执行
疑问
“ISE WebPACK” 和 “vivado WebPACK” 有什么关系和区别
* ISE/EDK are the old tools
that are to be used for all Virtex-6 and older devices
and that can be used for some small/middle-size Virtex-7 devices.
自2012年以来,Xilinx ISE 已被 Vivado Design Suite 代替,后者的功能与 ISE 相同,但还带有 SoC 开发的附加功能。
Xilinx 于2013年10月发布了最终版本的 ISE(版本号为14.7),并声明“ ISE 已进入其产品生命周期的维持阶段,并且不再计划发布 ISE。
即随着FPGA进入28nm时代,ISE工具有些“不合时宜”了,硬件提升了,软件也需要提升。
* Vivado is the new tool
that only supports Virtex-7, UltraScale and all more recent families.
Vivado is specified for more modern chips such as Zynq 7-series.
Vivado是Xilinx公司于2012年推出的新一代集成设计环境。
推出Vivado是为了提高设计者的效率,他能显著增加Xilinx的28nm工艺的可编程逻辑期间的设计、综合于实现效率。
Xilinx explicitly said that they will not add support for older FPGA families into Vivado. So you still have to use ISE for them (e.g. Virtex-5).
The only FPGA family where you actually have a choice is some 7-series FPGAs that are supported by ISE and Vivado. both. My recommendation is to use Vivado for those. If you get a license from Xilinx, it works for ISE and Vivado both anyway.
Xilinx told me at a booth that they completely re-developed Vivado from scratch (starting about 5 years before it was released) with new algorithms for all steps (place and route, etc.) and new data bases for internal management. For instance, in ISE, each 'step' was actually a different binary tool that communicated via files with each other and ISE was actually mainly a GUI to connect them. In Vivado, all steps have the same view on a global data structure. That for instance allows you to trace back a signal that the post-place-and-route-static-timing-report identifies as your critical path, back to your HDL code. Additionally, the algorithms for Vivado are implemented with having the ever-growing size of FPGAs in mind. For instance, Xilinx told me that their placement algorithm has a complexity of O(n^4) (n being the number of elements to be placed) while at the same time producing a much higher reproducibility than the ISE algorithms (e.g. if you run P&R in ISE 5 times on a big design, you will get 5 different results with different timing scores). This won't happen in Vivado.
Xilinx 7系列FPGA介绍
CPU自制入门中使用的 "Spartan-3E XC3S250E" 不是 xilinx-7 系列,而是 "Spartan-3E" 系列,好像没有 xilinx-3E 系列与之对应
与 xilinx-7 对应的是 Spartan-7
Spartan 系列包括 Spartan-2 Spartan-2E Spartan-3 Spartan-3A Spartan-3E Spartan-6 Spartan-7
参考 https://www.360xilinx.com/show-174667.htm
赛灵思公司的7系列FPGA根据不同客户的应用需求,分为5个子系列 // 7系列FPGA采用的是统一的28nm设计架构
Zynq SoC 系列
Zynq-7000
三款小型产品—Z7010,Z7015, Z7020
Zynq 芯片的总体架构,并详述了它的两个组成部分:PS 和 PL
一个由双核 ARM Cortex-A9 为核心构成的处理系统 PS Processing System
一个等价于一片 FPGA 的可编程逻辑(PL,Programmable Logic)部分
Zynq UltraScale+MPSoC是Xilinx推出的第二代多处理SoC系统 // http://www.elecfans.com/d/1309652.html
在第一代Zynq-7000的基础上做了全面升级
共有四个大的系列,分别是CG系列、EG系列和EV系列,其中EG系列和EV系列提供汽车级和军品级器件
Spartan7系列
Spartan7系列是7系列中的屌丝青年,拥有最低的价格、最低的功耗、最小的尺寸以及最低的设计难度
一些低端应用中极为合适。
Artix7系列
Artix7系列是7系列中的普通青年,相对Spartan7系列则增加了串行收发器和DSP功能
其逻辑容量也更大,适合逻辑一些稍微复杂的中低端应用。
Kintex7系列
Kintex7系列是7系列中的文艺青年,是在所有系列中拥有最佳的性价比
无论是硬核数量还是逻辑容量,都能满足中低端、以及部分高端应用需求。
Virtex7系列
Virtex7系列则是7系列中的大佬,只在高端应用中使用
在中低端应用就如同高射炮打蚊子,大材小用!
Xilinx Virtex UltraScale XCVU440FLGA2892 FPGA
问题
1.按道理 rtl 可以 封 到 任何 fpga 里面,只要资源够
2.Spartan系列 jtag xvf 文件,具体改变了什么,怎么boot
3.fpga bit 文件制作过程中 是不是会 引用 一些 IP ,有什么场景
4.fpga 制作关注什么?
fpga型号资源
未定义的接口
时钟
内存
版权声明:本文为u011011827原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。