如何写出用于FPGA的可读性较强的HDL代码可读性

FPGA高手设计实战真经100则_百度百科
声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。
FPGA高手设计实战真经100则
目前, FPGA逻辑设计已经成为一个高度专业化的硬件设计领域,它需要设计者熟练地掌握设计工具,深刻理解FPGA的内在结构及灵活运用设计语言,从而能够有效地完成复杂的设计任务。本书旨在系统地和读者分享这些知识与经验,帮助电子工程师和学生提高其FPGA设计技能。读者可以从书中发现有价值的实用设计经验,这些经验在其他相关的教材中较少涉及。本书以Xilinx公司的FPGA和集成开发环境为应用背景,示例以Verilog HDL为设计语言。
FPGA高手设计实战真经100则作者简介
Evgeni Stavinov 在FPGA领域已有十多年的工作经验。在成为SerialTek LLC公司的硬件架构师之前,他在Xilinx、LeCroy、CATC等公司担任过多种设计职位。Evgeni Stavinov 分别在以色列理工学院和南加州大学获得电气工程学士和硕士学位。除此之外,他还是的创办者,该网站旨在为客户提供各种高效率的设计工具。
FPGA高手设计实战真经100则图书目录
第1则 引言   第2则 FPGA发展现状   第3则 FPGA的应用   第4则 FPGA结构   第5则 FPGA项目中包含的任务   第6则 FPGA设计工具概述   第7则 Xilinx的FPGA编译流程   第8则 在命令行模式下使用Xilinx工具   第9则 Xilinx的环境变量   第10则 Xilinx ISE工具版本   第11则 不常用的Xilinx工具   第12则 关于Xilinx工具报告   第13则 命名规范   第14则 Verilog编码风格   第15则 编写用于FPGA的可综合代码   第16则 例化与推译   第17则 Verilog和VHDL的混合使用   第18则 Verilog版本: Verilog?95、 Verilog?2001与SystemVerilog   第19则 HDL代码编辑器   第20则 FPGA时钟资源   第21则 时钟设计方案   第22则 跨时钟域   第23则 时钟同步电路   第24则 使用FIFO   第25则 计数器   第26则 带符号的算术运算   第27则 状态机   第28则 使用Xilinx DSP48原语   第29则 复位方案   第30则 设计移位寄存器   第31则 外部设备接口   第32则 使用查找表和进位链   第33则 流水线设计   第34则 使用嵌入式存储器   第35则 了解FPGA比特流结构   第36则 FPGA配置   第37则 FPGA的重构   第38则 估计设计规模   第39则 估计设计速度   第40则 FPGA的功耗估计   第41则 引脚分配   第42则 热分析   第43则 FPGA的成本估计   第44则 GPGPU与FPGA   第45则 ASIC向FPGA的移植   第46则 ASIC和FPGA的设计差异   第47则 硬件模拟器与原型验证平台   第48则 ASIC移植中的FPGA芯片划分   第49则 时钟系统的移植   第50则 锁存器的移植   第51则 组合逻辑的移植   第52则 不可综合逻辑的移植   第53则 存储器的建模   第54则 高阻态逻辑的移植   第55则 验证移植后的设计   第56则 FPGA设计验证   第57则 FPGA仿真类型   第58则 如何提高仿真工具的性能   第59则 仿真和综合结果不一致的原因   第60则 如何选择仿真工具   第61则 商用仿真工具与开源仿真工具   第62则 测试平台的设计   第63则 仿真的最佳实践   第64则 仿真性能的评估   第65则 基于FPGA架构的处理器   第66则 以太网IP核   第67则 网络应用设计   第68则 IP核的选择   第69则 IP核的保护   第70则 IP核的接口总线   第71则 串行和并行CRC   第72则 扰码器、 伪随机二进制序列(PRBS)和多输入移位寄存器(MISR)   第73则 具有安全应用的核   第74则 存储器控制器   第75则 USB核   第76则 PCI Express核   第77则 其他IP核和功能块   第78则 减少FPGA的编译时间   第79则 设计面积优化: 工具选项   第80则 设计面积优化: 编码风格   第81则 设计功耗优化   第82则 FPGA的设计开发   第83则 PCB检查工具   第84则 协议分析工具和训练器   第85则 FPGA配置中遇到的问题   第86则 使用ChipScope工具   第87则 使用FPGA编辑器   第88则 使用Xilinx系统监视器   第89则 FPGA错误分析   第90则 时序约束   第91则 执行时序分析   第92则 时序收敛流程   第93则 时序收敛: 工具选项   第94则 时序收敛: 约束和编码风格   第95则 FPGA的布局规划艺术   第96则 布局规划存储器和FIFO   第97则 编译管理和持续集成   第98则 Verilog处理和设计流程脚本语言   第99则 报告和设计分析工具   第100则 其他可参考资源   缩略语
FPGA高手设计实战真经100则序言
本书是由Evgeni Stavinov所著的用于分享FPGA设计经验与技巧的参考书。Evgeni Stavinov有超过十年的FPGA设计经验,曾经供职于多家国际知名公司,使用FPGA完成过大量工程设计项目。我们受电子工业出版社委托,组织对该书进行了翻译。   目前国内关于FPGA设计方面的书籍已经比较多了,这些书籍大多是将Verilog HDL或VHDL语法知识和FPGA设计结合起来进行内容组织的。本书面向的是希望提高FPGA设计技巧的电子工程师和相关专业的本科高年级学生。书中没有对基本语法知识进行过多介绍,而是根据作者长期的工程实践经验,在FPGA设计工具使用、工程中需要注意的语法要点、设计综合与物理实现、FPGA选型、设计仿真与验证、IP内核的使用、设计优化、布局布线与时序收敛等多个方面总结归纳了100个常见的问题和知识点。对于每个问题和知识点,本书不但进行了专门的讨论和分析,还给出了针对性非常强的示例供读者参考,大大提高了本书的实用性。这类书籍目前在国内还非常缺乏。   现在,无论是在针对客户的一线支持中,还是在高校的一线教学中,我们发现简单地罗列一些FPGA设计知识已经远远不能解决实际应用中的各种问题。如何采用更好的设计流程,如何对产生的问题进行定位,如何高效地使用开发工具,已经成为整个工业界和学术界日益高涨的呼声。为了提高一线工程师的理论水平和实际开发水平,为了能够让高校教学和业界需求更加接轨,我们邀请了来自于不同领域的专家和学者,将业界优秀的开发理念和流程介绍给大家。   安富利电子元件(Avnet Electronics Marketing)是安富利公司(Avnet, Inc.)旗下的运营机构,是全球最大的电子元件分销商之一,同时也是Xilinx 全球的战略合作伙伴,致力于Xilinx FPGA在全球的市场推广和技术支持工作。安富利Xilinx中国团队负责组织了本书的翻译工作。其中安富利公司的 FPGA设计方法学技术专家朱江完成了第41~70则的翻译工作,尹廷辉、乔庐峰、薛红三位长期工作在教学一线的老师分别完成了第1~40则及第71~100则的翻译工作,乔庐峰对重点内容进行了审校。同时也十分感谢安富利公司的高级技术市场经理陈志勇博士对全书进行了最后审校并提出了宝贵意见。   鉴于时间紧迫和译者水平有限,本书涉及知识面又较为广泛,因此译文中难免有错误之处,敬请读者批评指正。   前 言   虽然在整个职业生涯中编写过大量的技术文档,在各种周刊上发表过很多技术文章,也经常更新我的技术博客,但是我从来没有想过有一天能成为这本书的作者。从某种程度上来说,在FPGA设计领域我确实积累了不少的设计经验和专业知识,因此我想应该和大家分享一下我的心得体会。   撰写好一本书需要和工程设计完全不同的技能,你需要付出时间,并且进行训练才能够逐渐驾驭,特别是对于像我这种习惯使用“编程语言”而不是“自然语言”的工程师。除此之外,写出一本能够让大家喜欢的书,也需要相当的智慧和经验。   为此我感谢所有给我提供各种帮助的同事和朋友,他们有些提供了非常有价值的想法,有些帮助我审阅了其中的内容,甚至帮我修改了手稿。我衷心地感谢来自SerialTek公司的同事、Xilinx公司的同事、技术博客的博主们,以及所有给予我帮助的人们。     Evgeni Stavinov       作 者 简 介   Evgeni Stavinov 在FPGA领域已有十多年的工作经验。在成为SerialTek LLC公司的硬件架构师之前,他在Xilinx、LeCroy、CATC等公司担任过多种设计职位。Evgeni Stavinov 分别在以色列理工学院和南加州大学获得电气工程学士和硕士学位。除此之外,他还是的创办者,该网站旨在为客户提供各种高效率的设计工具。手把手教你学FPGA免费在线培训_硬件描述语言篇之Verilog HDL代码规范.pdf-嵌入式系统-电子产品世界
|||||||||||
& 手把手教你学FPGA免费在线培训_硬件描述语言篇之Verilog HDL代码规范.pdf
手把手教你学FPGA免费在线培训_硬件描述语言篇之Verilog HDL代码规范.pdf
手把手教你学FPGA免费在线培训_硬件描述语言篇之Verilog HDL代码规范.pdf
手把手教你学习 FPGA 系列教程
硬件描述语言篇之 Verilog HDL 代码规范
1. 代码规范目的
本规范的目的是提高书写代码的可读性、可修改性、可重用性,优化代码综
合和仿真的结果,指导设计工程师使用VerilogHDL规范代码和优化电路,规范
可编程技术的VerilogHDL设计输入,从而做到:1.逻辑功能正确,2.提高整洁
度,3.便于跟踪、分析、调试,4.增强可读性,帮助阅读者理解,5.便于程序维
护,6. 便于整理文档,7. 便于交流合作。
2. 代码规范范围
本规范涉及Verilog HDL编码风格,编码中应注意的问题,Testbench的编码
等。本规范适用于Verilog model的任何一级(RTL,behavioral, gate_level),也适
用于出于仿真、综合或二者结合的目的而设计的模块。
3. 代码规范内容
3.1 标准的文件头
在每一个版块的开头一定要使用统一的文件头,其中包括作者名,模块名,
创建日期,所属项目,概要,更改记录,版权等必要信息。
3.2 标准的 module 格式
module 例化名用 xx_u 标示(多次例化用次序号 0,1,2…)。
建议每个模块加 timescale。
不要书写空的模块,即一个模块至少要有一个输入一个输出。
为了保持代码的清晰、美观和层次感,一条语句占用一行,每行限制
在 80 个字符以内,如果较长则要换行。
采用基于名字(name_based)的调用而非基于顺序的(order_based)的
分享给小伙伴们:
手把手教你学FPGA免费在线培训_硬件描述语言篇之Verilog HDL代码规范.pdf
相关资源,
该用户资料分享
相关新闻,
相关电路,
好好学习下
微信公众号二
微信公众号一如何写出用于FPGA的可读性较强的HDL代码? - 知乎45被浏览1907分享邀请回答161 条评论分享收藏感谢收起如何学好FPGA(大师经验谈)绝对经典! - FPGA|CPLD|ASIC论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
如何学好FPGA(大师经验谈)绝对经典!
22:00:14  
36031&查看
本帖最后由 cakeway 于
13:45 编辑
如何学习FPGA掌握FPGA可以找到一份很好的工作,对于有经验的工作人员,使用FPGA可以让设计变得非常有灵活性。掌握了FPGA设计,单板硬件设计就非常容易(不是系统设计),特别是上大学时如同天书的逻辑时序图,看起来就非常亲切。但FPGA入门却有一定难度,因为它不像软件设计,只要有一台计算机,几乎就可以完成所有的设计。FPGA设计与硬件直接相关,需要实实在在的调试仪器,譬如示波器等。这些硬件设备一般比较昂贵,这就造成一定的入门门槛,新人在入门时遇到一点问题或者困难,由于没有调试设备,无法定位问题,最后可能就会放弃。其实这时如果有人稍微指点一下,这个门槛很容易就过去。  我用FPGA做设计很多年了,远达不到精通的境界,只是熟悉使用,在这里把我对FPGA学习步骤理解写出来,仅是作为一个参考,不对的地方,欢迎大家讨论和指正。FPGA学习步骤1、工欲善其事,必先利其器。计算机必不可少。目前FPGA应用较多的是Altera和xilinx这两个公司,可以选择安装quartusII或者ISE软件。这是必备的软件环境。硬件环境还需要下载器、目标板。虽然有人说没有下载器和目标板也可学习fpga,但那总是纸上谈兵。这就像谈女朋友,总是嘴上说说,通个电话,连个手都没牵,能说人家是你朋友?虽说搭建硬件环境需要花费,但想想,硬件环境至多几百元钱,你要真的掌握FPGA的设计,起薪比别人都不止高出这么多。这点花费算什么?FPGA学习步骤2、熟悉verilog语言或者vhdl语言 ,熟练使用quartusII或者ISE软件。VHDL和verilog各有优点,选择一个,建议选择verilog。熟练使用设计软件,知道怎样编译、仿真、下载等过程。起步阶段不希望报一些培训班,除非你有钱,或者运气好,碰到一个水平高、又想把自己的经验和别人共享的培训老师,不然的话,培训完后总会感觉自己是一个冤大头。入门阶段可以在利用网络资源完成。FPGA学习步骤3、设计一个小代码,下载到目标板看看结果此时可以设计一个最简答的程序,譬如点灯。如果灯在闪烁了,表示基本入门了。如果此时能够下载到FPGA外挂的flash,FPGA程序能够从flash启动,表明FPGA的最简单设计你已经成功,可以到下一步。FPGA学习步骤4、设计稍微复杂的代码,下载到目标板看看结果。可以设计一个UART程序,网上有参考,你要懂RS232协议和FPGA内置的逻辑分析仪。网上下载一个串口调试助手,调试一番,如果通信成功了, 恭喜,水平有提高。进入下一步。FPGA学习步骤5、设计复杂的代码,下载到目标板看看结果。譬如sdram的程序,网上也有参考,这个设计难度有点大。可用串口来调试sdram,把串口的数据存储到sdram,然后读回,如果成功,那你就比较熟悉FPGA设计了FPGA学习步骤6、设计高速接口,譬如ddr2或者高速串行接口这要对FPGA的物理特性非常了解,而且要懂得是时序约束等设计方法,要看大量的原厂文档,这部分成功了,那就对FPGA的物理接口掌握很深,你就是设计高手了FPGA学习步骤7、设计一个复杂的协议譬如USB、PCIexpress、图像编解码等,锻炼对系统的整体把握和逻辑划分。完成这些,你就是一个一流的高手、FPGA学习步骤8、学习再学习学习什么,我也不知道,我只知道“学无止境,山外有山”。现在很多FPGA工程师,没找到合适,我觉得很多人从开始的时候就误入歧途了,对新手学习FPGA设计我也说一点看法吧。我认为要从基础开始做,基础牢,才有成为高手的可能。我觉得FPGA学习有以下几步必须要走:第一步:学习了解FPGA结构,FPGA到底是什么东西,芯片里面有什么,不要开始就拿个开发板照着别人的东西去编程。很多开发板的程序写的很烂,我也做过一段时间的开发板设计,我觉得很大程度上,开发板在误人子弟。不过原厂提供的正品开发板,代码很优秀的,可以借鉴。只有了解了FPGA内部的结构才能明白为什么写Verilog和写C整体思路是不一样的。第二步:掌握FPGA设计的流程。了解每一步在做什么,为什么要那么做。很多人都是不就是那几步吗,有什么奇怪的?呵呵,我想至少有一半以上的人不知道synthesize和traslate的区别吧。了解了FPGA的结构和设计流程才有可能知道怎么去优化设计,提高速度,减少资源,不要急躁,不要去在为选择什么语言和选择哪个公司的芯片上下功夫。语言只是一个表达的方式,重要的是你的思维,没有一个好的指导思想,语言用得再好,不过是个懂语言的人。第三步:开始学习代码了。我建议要学代码的人都去Altera或Xilinx的网站上下原厂工程师的代码学习。不要一开始就走入误区。第四步:template很重要。能不能高效利用FPGA资源,一是了解fpga结构,二是了解欲实现的逻辑功能和基本机构,三是使用正确的模板。FPGA内部器件种类相对较单一,用好模板,你的逻辑才能被高效的综合成FPGA擅长表达的结构:)做FPGA主要是要有电路的思想,作为初学者,往往对器件可能不是熟悉,那么应该对于数字电路的知识很熟悉吧,FPGA中是由触发器和查找表以及互联线等基本结构组成的,其实在我们在代码里面能够看到的就是与非门以及触发器,不要把verilog和c语言等同起来,根本就是不同的东西,没有什么可比性,在写一句程序的时候应该想到出来的是一个什么样的电路,计数器选择器 三态门等等,理解时序,逻辑是一拍一拍的东西,在设计初期想的不是很清楚的时候可以画画时序图,这样思路会更加的清晰,还有就是仿真很重要,不要写完程序就去往FPGA中去加载,首先要仿真,尤其是对比较大型一点的程序,想像自己是在做asic,是没有二次机会的,所以一定要把仿真做好,还有很多新手对于语言的学习不知道选vhdl好还是verilog好,个人偏好verilog,当然不是说vhdl不好,反正写出来的都是电路,那当然就不要在语言的语法上面花太多的功夫了,verilog 言简意赅assign always case if else 掌握这些几乎可以写出90%的电路了,上面是我对FPGA学习的一些愚见,希望对大家有所帮助。
21:33:55  
都看过吗!!
19:46:13  
PCB在线计价下单
板子大小:
板子数量:
PCB 在线计价
感谢分享哈
14:55:41  
还行,第一个看过了
好东西 ,学习了&
12:24:04  
貌似之前已经收藏过了
20:49:36  
15:36:57  
vvvvvvvvvvvvvvvvvvv
21:11:09  
09:30:57  
10:34:37  
叩拜大师~~~~~~~~~~~~~
21:35:27  
22:25:42  
20:41:14  
10:40:39  
11:33:53  
dddddddddddd
11:37:07  
20:56:01  
11:14:57  
只能慢慢来了~
14:20:07  
恩恩,写得好,学习了!
20:10:45  
写的挺好,初学者要上路了
Powered by
供应链服务
商务及广告合作
Jeffery Guo
关注我们的微信
供应链服务 PCB/IC/PCBA
版权所有 (C) 深圳华强聚丰电子科技有限公司手把手教你学习FPGA系列教程_硬件描述语言篇之Verilog HDL代码规范-电子产品世界论坛
手把手教你学习FPGA系列教程_硬件描述语言篇之Verilog HDL代码规范
  1. 代码规范目的
  本规范的目的是提高书写代码的可读性、可修改性、可重用性,优化代码综合和仿真的结果,指导设计工程师使用VerilogHDL规范代码和优化电路,规范可编程技术的VerilogHDL设计输入,从而做到:1.逻辑功能正确,2.提高整洁度,3.便于跟踪、分析、调试,4.增强可读性,帮助阅读者理解,5.便于程序维护,6. 便于整理文档,7. 便于交流合作。
  2. 代码规范范围
  本规范涉及Verilog HDL编码风格,编码中应注意的问题,Testbench的编码等。本规范适用于Verilog model的任何一级(RTL,behavioral, gate_level),也适用于出于仿真、综合或二者结合的目的而设计的模块。
  3. 代码规范内容
  3.1标准的文件头
  在每一个版块的开头一定要使用统一的文件头,其中包括作者名,模块名,创建日期,所属项目,概要,更改记录,版权等必要信息。
  3.2标准的module 格式
  (1)module例化名用xx_u标示(多次例化用次序号0,1,2…)。
  (2)建议每个模块加timescale。
  (3)不要书写空的模块,即一个模块至少要有一个输入一个输出。
  (4)为了保持代码的清晰、美观和层次感,一条语句占用一行,每行限制在80个字符以内,如果较长则要换行。
  (5)采用基于名字(name_based)的调用而非基于顺序的(order_based)的调用。
  (6) 模块的接口信号按输入、双向、输出顺序定义。
  (7)使用降序定义向量有效位顺序,最低位是0。
  (8) 管脚和信号说明部分,一个管脚和一组总线占用一行,说明清晰。
  (9)在顶层模块中,除了内部的互联和module的例化外,避免再做其他逻辑。
  (10)为逻辑升级保留的无用端口以及信号要注释。
  (11)建议采用层次化设计,模块之间相对独立。
  3.3命名规则
  (1)每个文件只包含一个module,module名要小写,并且与文件名保持一致。
  (2)模块接口信号定义输入后缀“_i”,输出后缀“_o”。
  (3)模块接口信号定义在module()里直接声明信号类型 如module(input clk, input rst, input a, output reg b)。
  (4) 三态输出的寄存器信号应后缀"_z"。
  (5)除parameter外,信号名全部小写,名字中的两个词之间用用下划线连接。
  (6) 由parameter定义的常量要求全部字母大写,自己定义的参数、类型用大写标识。
  (7)推荐用parameter来定义有实际意义的常数,包括单位延时、版本号、板类型、单板在位信息、LED亮灯状态、电源状态、电扇状态等。
  (8)信号名长度不超过20字符。
  更多……请点击[]
◆ 更多FPGA学习教程 &&【】
可以下来看看 。。。。
可以下来看看
恩,看着不错呢
谢谢分享,支持一下!
好课程,顶!
谢谢楼主的讲解。
转载写明自己独到的见解 比较好 可以 互相学习
匿名不能发帖!请先 [
Copyright (C) 《电子产品世界》杂志社 版权所有}

我要回帖

更多关于 代码可读性 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信