版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章 基于Xilinx芯片Verilog进阶设计面向硬件电路的设计方法代码风格与可综合设计通用代码风格专用代码风格企业代码风格企业级大规模FPGA应用设计方法原语的使用面向硬件电路的设计方法将具体功能形成硬件的RTL级模型编写代码始终要考虑硬件如何实现基于FPGA实现的Verilog设计特点并行化同步控制实现代价面向硬件电路的设计方法硬件实现的并行化从电路上来看:只要芯片上电,所有逻辑就开始工作。从代码上来看:所有的描述语句之间是并行执行的;always语句在边沿触发条件下的行为描述均采用非阻塞赋值,并行执行;面向RTL级电路的电路设计易于实现流水操作;与一般高级语言的顺序代码为主的设计方法
2、有本质的区别。面向硬件电路的设计方法时序延迟信号reg a, a_d1, a_d2;always (posedge clk or negedge rst)beginif (rst)begina_d1 = #TP 0; a_d2 = #TP 0;endelsebegina_d1 = #TP a; a_d2 = #TP a_d1; endend面向硬件电路的设计方法基于全局时钟的同步设计数据存储在FPGA的存放器或存储器中,时钟可看作执行控制器;串行算法的执行可以按照时钟节拍的顺序进行控制,存放器输出以及组合逻辑通常作为控制条件。例如:采用计数器控制状态变化或数据处理过程。面向硬件电路的设计方法实
3、现代价“面积和“速度的综合考虑:“面积指所占用的FPGA资源FF和LUT;“速度指芯片稳定运行所到达的最高频率。“面积和“速度是一对矛盾,可相互转化:“面积优先:资源复用;“速度优先:冗余同构部件。 ISE 的Map选项:优化策略可选择Area和Speed的优化策略代码风格与可综合设计Verilog HDL语言本身的标准只面向仿真不使用综合工具不支持的Verilog结构除了wire、reg的多数数据类型开关级原语deassign、wait等行为语句UDP和specify模块遵循可综合设计原那么代码综合出预想的逻辑行为描述的完整性代码风格与可综合设计同步电路设计优点容易使用存放器的异步复位/置位
4、端,以使整个电路有一个确定的初始状态;有效防止毛刺,提高可靠性;简化时序分析过程;减少对工作环境的依赖性,提高可移植性;原那么尽可能使用单时钟全局时钟尽可能使用单时钟沿触发posedge clk防止使用门控时钟组合逻辑驱动的时钟假设使用分频时钟应当统一管理代码风格与可综合设计同步电路设计代码风格与可综合设计同步电路设计的模块划分信息隐蔽、抽象:防止跨模块控制,边界清晰;端口明确:禁制多重功能和无用接口;时钟域区分:异步FIFO或双端口RAM实现多时钟域隔离;低频时钟域尽可能划分到一个模块中;资源优化:尽量使用厂商提供的原语存放器划分:模块的输出尽可能采用存放器输出reg型代码风格与可综合设计代
5、码风格包括书写标准和描述方法通用代码风格Verilog HDL语言标准,硬件无关,性能未必最优;专用代码风格基于具体芯片的结构和资源,性能优化,移植性可能受影响。“华为Verilog HDL设计标准Sun公司 “Verilog Style and Coding Guidelines“Actel HDL Coding Style Guider注重代码的硬件实现质量。 目标:功能正确,性能最优通用代码风格逻辑复用Synplify提供逻辑复用选项,但假设要获得最正确的复用效果,在源代码设计中应采用显式的复用控制逻辑;节约面积。逻辑复制Synplify提供最大扇出选项,如果扇出过大驱动过多后续逻辑,需
6、增加缓冲器提高驱动能力,但信号延迟增大;增加面积。通用代码风格逻辑结构树状结构优于链式结构,缩短延迟级数。if语句和case语句使用原那么if语句面积小,延迟大;case语句面积大,速度快。if适合对速度无特殊要求的场合;case适合高速编解码电路。if分支具有优先级,case分支无优先级。if不可嵌套技术过多,一般不超过3-4层。兼顾面积和速度,if和case混合使用。通用代码风格关键路径信号处理引起电路建立时间缺乏的信号路径成为关键路径组合电路关键路径提取采用逻辑拆分方式,降低关键信号的组合延迟级数。分析下面语句中b所经过的LUT级数。assign y = a & b & c | d &
7、e & b;assign t = a & c | d & e;assign y = b & t;通用代码风格if和case不完整分支造成的意外锁存器当always语句使用电平触发时有可能产生锁存器。参见P106例3-12和例3-13当always语句使用时钟沿触发时不会产生,此时只产生存放器。通用代码风格reg型信号只能在一个always语句中赋值最常见的HDL行为描述建模错误之一防止assign不确定语句assign signal_a = #4 signal_a;#4被综合工具忽略掉专用代码风格时钟信号分配原那么使用全局时钟,通过BUFG驱动,时钟信号到达各个存放器的延迟相同。减少时钟信号种
8、类防止时钟毛刺信号不使用门控时钟专用代码风格SRL16的使用SRL16是一种基于LUT的移位存放器;可生成任意位宽和深度的移位存放器;srl16_based_ram my_shift_ram(.clk ( ),.d ( ),.q ( );专用代码风格触发器资源分配尽量使用库中的触发器资源;状态机编码尽可能采用“独热码one-hot。 (synplify综合工具可提供相关功能)反向信号尽量使用符号,而不使用not原语;不要尝试用多个反向器级联来增加需要的信号延迟;反向信号驱动多个负载可采用分散反向。 综合工具可自动优化企业代码风格1.根本书写规那么用有意义而有效的名字;用连贯的缩写;Clk Rs
9、t 用最右边左边的字符下划线表示低电平有效,高电平有效的信号不得以下划线表示;Rst_ Trdy_名字一般首字符大写,其余小写但parameter, integer 定义的数值名可全部用大写,两个词之间要用下划线连接Packet_addr Data_in企业代码风格1.根本书写规那么全局信号名字中应包含信号来源的一些信息;同一信号在不同层次应保持一致性;自己定义的常数类型等用大写标识parameter CYCLE = 100;防止使用保存字作为信号、模块名称;添加有意义的后缀使信号名更加明确。企业代码风格2.Module顶层模块应只是内部模块间的互连,除了内部的互连和模块的调用外尽量防止再做逻
10、辑如不能再出现对reg变量的always赋值,不能再用assign语句完成复杂逻辑;每一个模块应在开始处注明文件名功能描述引用模块设计者设计时间及版权信息ISE生成模板;不要对input进行驱动, 在module 内不要存在没有驱动的信号,更不能在模块端口中出现没有驱动的输出信号,防止在仿真或综合时产生warning,干扰错误定位;防止由于未驱动产生的x,z企业代码风格2.Module每行应限制在80个字符以内以保持代码的清晰美观和层次感;模块实例名应采用U_xx命名,端口采用显式关联而非隐式关联;用一个时钟的上沿或下沿采样信号,不能混合使用;如果一定要使用时钟双沿,可使用180度相位时钟;在
11、模块中增加注释;Module 名要用大写标示,且应与文件名保持一致;企业代码风格2.Module严格芯片级模块的划分,只有顶层包括IO引脚;模块输出存放器化,对所有模块的输出加以存放,输出的驱动强度和输入的延迟可以预测,从而使得模块的综合过程更简单;将关键路径逻辑和非关键路径逻辑放在不同模块,实施不同的优化策略。企业代码风格3.线网与存放器一个reg变量只能在一个always语句中赋值;向量有效位顺序的定义一般是从大数到小数;模块输出端口,对线网和存放器类型的要做声明;使用克综合的的线网和存放器类型。企业代码风格4.表达式用括号来表示执行的优先级,使优先级阅读更清晰;注意不要造成额外的延迟用一
12、个函数(function)来代替表达式的屡次重复,仿真中经常使用的一组描述可以写到一个任务(task)中;企业代码风格5. if语句向量比较时比较的向量宽度要相等,不相等时建议采用显示扩展;每一个if 都应有一个else 和它相对应;应注意if .else if .else if .else 的优先级;如果变量在if-else 或case 语句中做非完全赋值那么应给变量一个缺省值。always语句的自身要求企业代码风格6. case语句case语句通常综合成一级多路复用器,if-then-else那么综合成优先编码的串接的多个多路复用器;所有的Case 应该有一个default case 允许
13、空语句Default : ;企业代码风格7.函数在function的最后给function赋值;函数中防止使用全局变量,否那么容易引起HDL行为级仿真和门级仿真的差异。注意:函数与任务的调用均为静态调用企业代码风格8.赋值Verilog 支持两种赋值:过程赋值(procedural) 和连续赋值(continuous) ,过程赋值用于过程代码(initial, always, task or function)中给reg和integer变量timerealtime、real赋值,而连续赋值一般给wire变量赋值;reg型与wire型赋值问题always (敏感表敏感表要完整如果不完整将会引起仿
14、真和综合结果不一致;电平触发的意外锁存器问题企业代码风格8.赋值force/release 仅用于debug,对存放器和线网均有用;防止使用Disableassign/deassign 仅用于仿真加速仅对存放器有用;可综合设计问题对任何reg赋值用非阻塞赋值代替阻塞赋值, reg 的非阻塞赋值要加单位延迟,但异步复位可加可不加。reg赋值问题,仿真赋值延迟问题企业代码风格9.组合逻辑与时序逻辑如果一个事件持续几个时钟周期设计时就用时序逻辑代替组合逻辑;内部总线不要悬空,在default状态要把它上拉或下拉。企业代码风格10.宏与参数为了保持代码的可读性常用 define做常数声明;把defin
15、e放在一个独立的文件中;参数parameter 必须在一个模块中定义,不要传替参数到模块;如果希望宏的作用域仅在一个模块中就用参数来代替。企业代码风格11.注释对更新的内容更新要做注释;在语法块的结尾做标记;每一个模块都应在模块开始处做模块级的注释;在模块端口列表中出现的端口信号都应做简要的功能描述。企业代码风格12.有限状态机FSMVerilogHDL描述状态机时由parameter分配好状态;组合逻辑和时序逻辑分开用不同的进程:组合逻辑包括状态译码和输出;时序逻辑那么是状态存放器的切换;必须包括对所有状态都处理不能出现无法处理的状态使状态机失控;Mealy机的状态和输入有关,而Moore机
16、的状态转换和输入无关。Mealy机使用的较多企业代码风格13.testbench在testbench中防止使用绝对的时间,如#20,#15或#(CYC+15)等,应该在文件前面使用parameter定义一些常量,使得时间的定义象#(CYC+OFF0)的形式,便于修改;观测结果可以输出到波形文件或数据文件 ;对大的设计的顶层仿真一般不要对所有信号跟踪波形文件会很大仿真时间延长可以有选择的观测一些信号;企业代码风格:常见代码问题在for-loop中包括不变的表达式浪费运算时间for (i=0;i4;i=i+1)beginSig1 = Sig2;DataOuti = DataIni;endfor-l
17、oop中第一条语句始终不变,浪费运算时间。注意,这是仿真代码企业代码风格:常见代码问题资源共享问题条件算子中不存在资源共享,如z = (cond) ? (a + b) : (c + d);必须使用两个加法器;而等效的条件if-then-else语句那么可以资源共享如if (Cond)z = a + b;elsez = c + d;只要加法器的输入端复用,就可以实现加法器的共享,使用一个加法器实现企业代码风格:常见代码问题由于组合逻辑位置不同而引起过多的触发器综合组合逻辑单独使用一个电平触发的always语句,存放器减少一个。注:1需根据具体需要 2少用always描述组合逻辑企业代码风格:常见
18、代码问题谨慎使用异步逻辑防止门控时钟always (posedge GATED_Clk or posedge Rst) begin if (Rst) Z Language TemplatesUCFVerilog原语的使用语言模板: UCF用户约束文件时钟管理单元约束初始化约束引脚约束布局布线约束时序约束使用UCF语句图形界面原语的使用语言模板: Verilog根本构件:根本的语言要素注释条件编译操作符函数和任务原语的使用语言模板: Verilog仿真构件:根本的语句规那么时钟模拟配置语句仿真延迟循环语句过程描述语句数据流描述语句数据类型系统函数库原语的使用语言模板: Verilog可综合构件always语句综合属性高级综合代码样例建议使用条件语句assign语句generate语句端口
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广州科技贸易职业学院单招职业倾向性测试题库含答案详解(a卷)
- 2026年山西财贸职业技术学院单招综合素质考试题库带答案详解(考试直接用)
- 2026年广东省珠海市单招职业倾向性考试题库及参考答案详解一套
- 2026年岳阳职业技术学院单招职业技能测试题库及答案详解(名校卷)
- 2026年山西老区职业技术学院单招职业倾向性测试题库及答案详解(典优)
- 2026年山西财贸职业技术学院单招职业适应性测试题库含答案详解(培优b卷)
- 2026年山西艺术职业学院单招职业适应性测试题库含答案详解(基础题)
- 中暑休克患者的紧急处理
- 2025年脑科学数据分析师创新思维训练
- 中学教室隔音改造施工方案
- 矿业项目进退场交接措施
- JG/T 3028-1995住宅厨房排烟道
- 小学语文六年级下册第一单元大单元作业设计
- T/CHES 59-2021组合式金属防洪挡板安装、验收及维护规范
- 宁夏砖瓦用粘土矿产地质勘查技术规程 DB64-T 1754-2020
- 青光眼的观察与护理
- 《跨境电子商务法律法规 》全套教学课件
- 电工实训项目二常用电工工具、仪表使用模块二 认识和使用常用电工仪表
- 残疾人证管理实施细则
- 第一部分 素养1 专题2 区域尺度【教研派资料社】
- 《空调制冷原理》课件
评论
0/150
提交评论