自顶而下设计FPGA
对IC设计而言,FPGA设计层级大致包括:系统级和行为级,RTL级,门级和晶体管级。然而更普遍的情况,FPGA只是用作实时数据采集控制、某些快速处理算法、PCIe\DDR3等高速数据通道,甚至某些简单的胶合逻辑等,FPGA开发工程师基本不会接触到门级和晶体管级。自顶而下FPGA设计方法,按照职位分工不同,大致归纳如下。
1. 系统架构师工作在系统级,一般使用高级语言如System C描述一个系统的规格,仿真整个系统的功能和性能等,往往不涉及具体的实现细节,但应该对系统实现所需要的资源等关键指标进行充分评估,可能包括模块互联总线形式,IO资源(Clock, GTX\GTP等),IP,核心算法等,确定FPGA选型,设计模块划分等。系统级设计工具推荐使用HDL designer,系统结构能够图形化表示,一目了然;多种输入方式:框图、流程图、状态机、真值表、基于接口设计(IBD)、表格式输入输出、HDL文本等,且都可以自动生成可综合的HDL代码。系统级的输出包括:系统设计描述和功能模块划分,FPGA资源分配,可用的IP及算法等。
2. 逻辑设计工程师工作在RTL级,他们使用Verilog\VHDL进行功能模块开发,需要精确到时钟周期;当然也可以使用System Generator(Matlab)和高层综合工具HLS(C语言)开发算法。RTL级的结果输出必须是仿真正确,代码可综合的。条件允许的话,需要进行后仿真或板级验证。RTL级的输出包括:FPGA设计文档,可综合的FPGA设计代码(不限于Verilog\VHDL, systemGen或者HLS的设计输出),性能及资源分析报告,验证方法及测试结果。
3. 验证工程师工作在行为级,他们对设计好的代码进行验证,编写的代码主要是用来产生激励,这些激励大部分抽象层次更高,仿真效率更高,然后检查相应结果。这些代码不会实现为具体硬件,有些并不需要精确到时钟周期,只是在仿真工具(ModelSim\ISim\Questa)中运行。验证工作的输出包括:验证方法步骤及代码,验证报告等。
4.硬件测试工程师的任务是对配置好的FPGA进行板级测试,在实验室环境下搭建测试平台,使用测试仪器仪表或者测试工装产生激励条件,验证测试结果是否满足设计要求。测试工程师可能完全不懂FPGA,这就要求测试文档需要相关的设计工程师的参与。这一阶段的输出包括测试步骤及接收标准文档,测试报告等。
这是我在项目中采用的自顶而下FPGA设计方法,人手够的时候,按照定义好的设计流程能够有条不紊的开展工作,减少项目成员间相互推卸责任、提高工作效率;有时候资源不足,自己身兼数职,任务繁重些,倒也自得其乐。

自顶而下设计FPGA的更多相关文章
- 使用Intel的FPGA电源设计FPGA 供电的常用反馈电阻阻值
使用Intel的FPGA电源设计FPGA 供电的常用反馈电阻阻值. 当前仅总结使用EN5339芯片的方案 Vout = Ra*0.6/Rb + 0.6 芯片手册推荐Ra取348K,则 3.3V时,取R ...
- 解决VS在高DPI下设计出的Winform程序界面变形问题
在目前高分屏流行的情况下,windows缩放与布局仍然设置为100%就显得太小(特别是笔记本),通常会调整为125%或150%, VS在缩放与布局设置为非100%的时候,就会自动启动DPI感知模式,以 ...
- 如何在高并发环境下设计出无锁的数据库操作(Java版本)
一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...
- 异步fifo的设计(FPGA)
本文首先对异步 FIFO 设计的重点难点进行分析 最后给出详细代码 一.FIFO简单讲解 FIFO的本质是RAM, 先进先出 重要参数:fifo深度(简单来说就是需要存多少个数据) ...
- [置顶] Linux下的截图小工具
Linux下的截图工具scrot 基于命令行 先下载:scrot apt-get install scrot 对该工具的操作: 分为以下几个部分 1.抓取整个桌面 scrot pic.jpg 2.抓取 ...
- [置顶] linux下让php支持mysql——寻找消失的mysql
问题 最近我都在忙一个课件录制系统.这两天发现其中服务器端的一个更新数据库的php脚本运行有问题,一些本应该是系统自带函数却无法运行.于是我展开了调查... 服务器端是centos系统,其中ph ...
- [置顶] MyEclipse下安装插件方法(properties文件编辑器Propedit为例)
网上流传了很多安装插件的方法.在这里我只讲解一种方法. 因为我认为这种方法有以下两个优点:第一.简单,方便安装:第二.对于自己安装的插件易于管理. 我的myeclipse版本号为10.5,操作系统为w ...
- [置顶] .NET下枚举类型的Save和Load分析
今天在写代码的时候,心血来潮对原来的字符串保存状态位的方式很不满意,对于代码里出现了 state == "1" 这样的状态判断很是不爽.那么理想中的判断是怎样的呢?很简单如你所想枚 ...
- [置顶] Linux下文件和目录权限说明
在Linux下使用ls -l或者ll命令可以查看文件和文件夹的权限.结果显示类似于: drwxrwxrwx,这里分为四组,分别为文件类型,文件所有者的权限(读写执行),文件所有者所在组用户的权限(读写 ...
随机推荐
- linux 基础知识
一.命令的基本用法 (1).Linux里面的命令分为内置命令和独立的命令. (2).命令行的基本使用方法 Cli Syntax #命令和选项 ...
- STM32 串口固件库中定义的几个中断标志位什么意思?
在stm32f10x_usart.h中以上几个宏,很没有规律,诈一看还真不知道为什么会这么定义,其实通过代码就很容易明白: D7~D5:代表中断标志位对应的中断使能位在 CR1.CR2还是CR3寄存器 ...
- hadoop中遇到的一些问题
1.验证词统计程序.----无法加载本地库 出现错误: WARN util.NativeCodeLoader: Unable to load native-hadoop library for you ...
- vue 2.0
vue2.0 据说也出了很久了,博主终于操了一次实刀. 整体项目采用 vue + vue-router + vuex (传说中的vue 全家桶 ),构建工具使用尤大大推出的vue-cli 项目是 ...
- Linux下漏洞提权
Linux下的漏洞提权 linux下一般都是系统漏洞提权,分为以下几个步骤:
- DEVExpress GridControl|TableView |FormatConditions 按一定格式设置相应内容
Get到一个新技能,感觉好棒.摘自DEV官网:https://www.devexpress.com/Support/Center/Example/Details/T135593 <Window ...
- c# 判断当前时间是否在 工作日时间段内
#region //获取当前周几 private string _strWorkingDayAM = "08:30";//工作时间上午08:00 private string _s ...
- linq 日期分组统计
#region string Condition(DateTime date, string type) { if (date == null) ...
- BZOJ3143 [Hnoi2013]游走
首先高斯消元解出每个点被走到的概率 注意到这里走到$n$就停下来了,所以$P(n) = 0$ 解出来以后,给每条边$(u, v)$赋边权$P(u) + P(v)$即可,然后直接贪心 /******** ...
- Microsoft.Office.Interop第三方程序 ppt 转换为PDF出错
错误信息:Retrieving the COM class factory for component with CLSID {91493441-5A91-11CF-8700-00AA0060263B ...