- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7.1 设计的可综合性 用FPGA/CPLD器件实现的设计中,综合就是将Verilog或VHDL语言描述的行为级或功能级电路模型转化为RTL级功能块或门级电路网表的过程. 可综合的设计中应注意 不使用初始化语句;不使用带有延时的描述;不使用循环次数不确定的循环语句,如forever,while等。 应尽量采用同步方式设计电路。除非是关键路径的设计,一般不采用调用门级元件来描述设计的方法,建议采用行为语句来完成设计。 用always过程块描述组合逻辑,应在敏感信号列表中列出块中出现的所有输入信号。 可综合的设计中应注意 所有的内部寄存器都应该能够被复位,在使用FPGA实现设计时,应尽量使用器件的全局复位端作为系统总的复位,用器件的全局时钟端作为系统外部时钟输入端。 在Verilog模块中,任务(task)通常被综合成组合逻辑的形式;每个函数(function)在调用时通常也被综合为一个独立的组合电路模块。 7.2 流水线设计技术 流水线设计是经常用于提高所设计系统运行速度的一种有效的方法。为了保障数据的快速传输,必须使系统运行在尽可能高的频率上,但如果某些复杂逻辑功能的完成需要较长的延时,就会使系统难以运行在高的频率上,在这种情况下,可使用流水线技术,即在长延时的逻辑功能块中插入触发器,使复杂的逻辑操作分步完成,减小每个部分的延时,从而使系统的运行频率得以提高。流水线设计的代价是增加了寄存器逻辑,增加了芯片资源的耗用。 流水线操作的概念 如某个复杂逻辑功能的实现需较长的延时,可将其分解为几个(如3个)步骤来实现,每一步的延时变小,在各步间加入寄存器,以暂存中间结果,这样可大大提高整个系统的最高工作频率。 非流水线方式8位全加器 非流水线仿真结果分析 两级流水实现的8位加法器 module adder_pipe2(cout,sum,ina,inb,cin,clk); input[7:0] ina,inb; input cin,clk; output reg[7:0] sum; output reg cout; reg[3:0] tempa,tempb,firsts; reg firstc; always @(posedge clk) begin {firstc,firsts}=ina[3:0]+inb[3:0]+cin; tempa=ina[7:4]; tempb=inb[7:4]; end always @(posedge clk) begin {cout,sum[7:4]}=tempa+tempb+firstc; sum[3:0]=firsts; end endmodule 两流水线设计仿真结果分析 四级流水线实现的8位加法器 7.4 过程 在Verilog语言中,过程语句包括always和initial。always过程反复执行其中的块语句,而initial过程中的语句块只执行一次。always过程可综合,initial语句只能用于仿真。 always过程语句与VHDL语言的进程语句Process非常相像,它既可以用来描述时序电路,也可以用来描述组合电路。一个Verilog模块中的不同always过程语句是并行运行的。 assign赋值语句、实例元件的调用也都是并行运行的,我们可以这样理解:这些语句最终都综合或翻译成为具体的电路结构,而这些电路结构是同时在运行或动作的。 在进行数字系统设计的时候应注意 将组合逻辑实现的电路和用时序逻辑实现的电路应尽量分配到不同的always过程中。 一个always过程中只允许描述对应于一个时钟信号的同步时序逻辑。 always过程必须由敏感信号的变化来启动,因此应精心选择进程敏感表达式中的敏感变量。 多个always过程间可通过信号线进行通信和协调。 7.5 阻塞赋值与非阻塞赋值 在可综合的硬件设计中,使用阻塞和非阻塞赋值语句时,应注意以下原则 (1)当用“always”块来描述组合逻辑时,既可以用阻塞赋值,也可以采用非阻塞赋值,应尽量使用阻塞赋值。 (2)对时序逻辑描述和建模,使用非阻塞赋值方式。 (3)为锁存器(Latch)建模,应使用非阻塞赋值。 (4)若在同一个“always”过程块中既为组合逻辑建模,又为时序逻辑建模,最好使用非阻塞赋值方式。 7.5 阻塞赋值与非阻塞赋值 在可综合的硬件设计中,使用阻塞和非阻塞赋值语句时,应注意以下原则 (5)在一个“always”过程块中,最好不要混合使用阻塞赋值和非阻塞赋值,虽然同时使用这两种赋值方式在综合时并不一定会出错,但对同一个变量不能既进行阻塞赋值,又进行非阻塞赋值,这样在综合时会报错。 (6)不能在两个个或两个以上的“always”过程块中对同一个变量赋值,这样会引发冲突,在综合时会报错。
您可能关注的文档
最近下载
- 2025年扬州工业职业技术学院单招语文测试模拟题库最新.docx VIP
- 部编高教版2023·职业模块 中职语文 口语交际《讲解》.pptx
- 2025年苏州工业职业技术学院单招职业技能测试题库最新.docx VIP
- 最后一个克林索尔克林索尔.PDF VIP
- 产业小镇案例:华夏幸福大厂影视小镇.pptx
- 2025年苏州经贸职业技术学院单招职业适应性测试题库最新.docx VIP
- 2024年安徽省阜阳市《保安员证》考试题库含答案通用完整版.pdf
- 2025年苏州经贸职业技术学院单招(语文)测试模拟题库最新.docx VIP
- 2025年苏州信息职业技术学院单招(语文)测试模拟题库最新.docx VIP
- 网格员考试公共基础知识题库.pdf
文档评论(0)