自顶而下设计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,这里分为四组,分别为文件类型,文件所有者的权限(读写执行),文件所有者所在组用户的权限(读写 ...
随机推荐
- maven引入本地jar
mvn install:install-file -Dfile=***.jar -DgroupId=**.***.** -DartifactId=* -Dversion=0.8.11 -Dpackag ...
- 微信微信JS-SDK 6.0.2 填坑笔记
0.为什么以前不需要配置这么麻烦就可以修改分享description 等信息,但是现在不行了. 因为6.0.2版本之前没有做权限验证,所以config都是ok,但这并不意味着你config中的签名是O ...
- 删除文件夹工具【fuckwinfsdel】,如 node_modules
强力删除文件夹. 安装 npm install fuckwinfsdel -g 使用 fuckwinfsdel youdir 例 fuckwinfsdel node_modules 项目地址 http ...
- 三代PacBio reads纠错 - 专题
三代纠错的重要性不言而喻,三代的核心优势就是长,唯一的缺点就是错误率高,但好就好在错误是随机分布的,可以通过算法解决,这也就是为什么现在有这么多针对三代开发的纠错工具. 纠错和组装是分不开的,纠错就是 ...
- Javascript优化后的加减乘除(解决js浮点数计算bug)
function add(a, b) { var c, d, e; try { c = a.toString().split(".")[1].length; } catch (f) ...
- 如何在本地电脑安装phpmyadmin及访问地址
因为要安装wordpress,上网查了下安装wordpress前要安装phpmyadmin,前提是要在自己本地电脑上安装APMSeverx虚拟主机才可以,在本地访问phpmyadmin页面.下面的步骤 ...
- javascript 字符串总结
match():查找字符串中特定的字符,如果找到这个字符,则返回这个字符: indexOf():定位这个字符串中某一个指定的字符首次出现的位置: sub():把字符串显示为下标: sup():把字符串 ...
- 【转】mysql查询结果输出到文件
转自:http://www.cnblogs.com/emanlee/p/4233602.html mysql查询结果导出/输出/写入到文件 方法一: 直接执行命令: mysql> select ...
- jquery trigger 触发事件小计 -- 关于a标签
jquery -- trigger触发执行事件方法虽然好用,偶尔也会出些小问题. 在最近得一个项目中需要触发a标签的点击事件时,我就遇到了点小问题.我很想当然的写层这样:$("a" ...
- Android实现圆形图片
情景再现: 写Android程序也有一段时间了,今天突然被问怎么实现一个圆形图片,很多app图像是圆形的.但是用户上传的图像可不是圆的,所以问题就来了,需要我们代码实现圆形图片.但是大脑飞转想到第三 ...