对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的更多相关文章

  1. 使用Intel的FPGA电源设计FPGA 供电的常用反馈电阻阻值

    使用Intel的FPGA电源设计FPGA 供电的常用反馈电阻阻值. 当前仅总结使用EN5339芯片的方案 Vout = Ra*0.6/Rb + 0.6 芯片手册推荐Ra取348K,则 3.3V时,取R ...

  2. 解决VS在高DPI下设计出的Winform程序界面变形问题

    在目前高分屏流行的情况下,windows缩放与布局仍然设置为100%就显得太小(特别是笔记本),通常会调整为125%或150%, VS在缩放与布局设置为非100%的时候,就会自动启动DPI感知模式,以 ...

  3. 如何在高并发环境下设计出无锁的数据库操作(Java版本)

    一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...

  4. 异步fifo的设计(FPGA)

    本文首先对异步 FIFO 设计的重点难点进行分析 最后给出详细代码 一.FIFO简单讲解 FIFO的本质是RAM, 先进先出 重要参数:fifo深度(简单来说就是需要存多少个数据)           ...

  5. [置顶] Linux下的截图小工具

    Linux下的截图工具scrot 基于命令行 先下载:scrot apt-get install scrot 对该工具的操作: 分为以下几个部分 1.抓取整个桌面 scrot pic.jpg 2.抓取 ...

  6. [置顶] linux下让php支持mysql——寻找消失的mysql

       问题 最近我都在忙一个课件录制系统.这两天发现其中服务器端的一个更新数据库的php脚本运行有问题,一些本应该是系统自带函数却无法运行.于是我展开了调查... 服务器端是centos系统,其中ph ...

  7. [置顶] MyEclipse下安装插件方法(properties文件编辑器Propedit为例)

    网上流传了很多安装插件的方法.在这里我只讲解一种方法. 因为我认为这种方法有以下两个优点:第一.简单,方便安装:第二.对于自己安装的插件易于管理. 我的myeclipse版本号为10.5,操作系统为w ...

  8. [置顶] .NET下枚举类型的Save和Load分析

    今天在写代码的时候,心血来潮对原来的字符串保存状态位的方式很不满意,对于代码里出现了 state == "1" 这样的状态判断很是不爽.那么理想中的判断是怎样的呢?很简单如你所想枚 ...

  9. [置顶] Linux下文件和目录权限说明

    在Linux下使用ls -l或者ll命令可以查看文件和文件夹的权限.结果显示类似于: drwxrwxrwx,这里分为四组,分别为文件类型,文件所有者的权限(读写执行),文件所有者所在组用户的权限(读写 ...

随机推荐

  1. 如何编写高质量的Javascript代码

    1.避免全局变量,因为全局变量容易发生名称上的冲突,可维护性不好. a,使用命名空间 b,使用闭包 c,在函数内部使用var声明 2.编写可维护的代码 a.可读性 b.连续性 c.预见性 d.看起来是 ...

  2. HTML基本标签

    h1-h6:标题标签.(从大到小) p:段落标签. img:图片标签:属性src:图片的相对路径:alt:图片加载失败的提示语言. a:超链接标签:属性:href:地址链接:target:网页打开的默 ...

  3. redhat samba匿名登录服务器搭建

    smb服务器只需要yum install samba 安装起,并修改配置文件就可以匿名使用了.   smb配置文件,这里允许匿名登录.红色部分代表我共享出来文件夹参数code [root@localh ...

  4. tcp 之失败重传机制

    1.回退N步协议: 滑动窗口模式,每次传送一批的数据,接收到一个就再放进去一个,如果前面一个没有收到回复,后面的就算收到了后面的数据也丢掉 2选择性重传 区别是收到后,缓存.

  5. MAC usb启动盘制作

    1.从App Store 下载OS 2.磁盘工具格式化磁盘默认即可 3. 为啥截图,因为有些是不一样的,建议使用 Tab建,    未命名则是你移动U盘命名的名称. 4.完成:所有的命令完成的话, 终 ...

  6. 前台jquery+ajax+json传值,后台处理完后返回json字符串,如何取里面的属性值?(不用springmvc注解)

    一.取属性值 前台页面: function select(id){ alert("hfdfhdfh"+id); $.ajax({ url:"selectByid.jsp& ...

  7. 【LeetCode】#344 Reverse String

    [Question] Write a function that takes a string as input and returns the string reversed. Example: G ...

  8. 【Duke-Image】Week_3 Spatial processing

    Chapter_3 Intensity Transsformations and Spatial Filtering 灰度变换与空间滤波 Intensity transformation functi ...

  9. 十天精通CSS3学习笔记 part4

    CSS3中的变形与动画(下) CSS3 Keyframes介绍 Keyframes 被称为关键帧,其类似于Flash中的关键帧.在CSS3中其主要以"@keyframes"开头,后 ...

  10. 关于layui

    之前用layer用了很长时间,感觉很好用,最近看到了layui的发布很想尝试尝试. 加入了挺多的功能,比如编辑器,上传,form表单等等.