大规模可编程器件技术(总).ppt

  1. 1、本文档共255页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
简单的可编程功能 通过熔丝连接-OTP(一次性可编程) 可编程技术小结 8.FPGA/CPLD器件的配置(六) 8.FPGA/CPLD器件的配置(八) 例1 例2 例1仿真结果 例2仿真结果 例1综合结果 例2综合结果 将上述两个赋值语句分别放在两个always模块中,其执行与例2的执行结果完全相同,因为always语句块之间是并发执行的 设计的可综合性 可综合是指所设计的指令和代码能转化为具体的电路网表结构 对CPLD/FPGA,综合就是将Verilog HDL语言描述的行为级或数据流电路模型转化为RTL级功能块或门级电路网表。 RTL级综合后得到由功能模块(触发器、算术逻辑单元、数据选择器等)构成的电路。 Verilog HDL基本元素与硬件电路元件间的映射 可综合设计的注意事项 不使用初始化语句;不使用带有延时的描述 尽量采用同步方式设计电路 一般不采用调用门级元件的设计方法,建议采用行为语句设计 用always过程块描述组合逻辑,应在敏感信号列表中列出出现的所有的输入信号 所有的内部寄存器都应该能复位,使用全局复位 行为建模—posedge和negedge关键字 例2:异步控制信号的描述方式 always @(posedge clk or posedge clear) begin if(clear) 语句1; //clear信号上升沿到来时,clear为高电平, else //执行语句1,即高电平清零有效 语句2; //否则,在时钟的上升沿执行语句2; end always @(posedge clk or negedge clear) begin if(!clear) 语句1; //低电平有效清零 else 语句2; end 行为建模—posedge和negedge关键字 注意块内的逻辑描述要与敏感信号表达式信号中的有效电平一致,如下错误的描述: always@(posedge clk or negedge clear) begin if(clear) //矛盾,应改为:if(!clear) out <= 0; else out <= in; end 其他语法 赋值语句 持续性赋值与过程赋值 阻塞赋值与非阻塞赋值 参数定义:parameter 编译预处理 宏定义`define 文件包含处理`include 时间尺度`timescale 其他语法 赋值语句 持续性赋值与过程赋值 阻塞赋值与非阻塞赋值 参数定义:parameter 编译预处理 宏定义`define 文件包含处理`include 时间尺度`timescale 赋值语句 持续性赋值语句(continuous assignment),主要用于对wire型变量赋值,用于数据流建模 过程赋值语句(procedural assignment),多用于对reg型变量赋值,用于行为建模。包括阻塞赋值(blocking assignment)和非阻塞赋值(non-blocking assignment)两种。 赋值语句——持续型赋值语句 例:2选1多路选择器 module MUX2_1(out,a,b,sel); input a,b,sel; output out; assign out = (sel==0)?a:b; //持续型赋值,如果sel为0,则out=a,否则,out=b endmodule 赋值语句——过程赋值语句 非阻塞(non-blocking)赋值方式 赋值符号为“<=”,如:b<=a; 非阻塞赋值在整个过程块结束时才完成赋值操作,即b的值并不是立即就改变的 阻塞(blocking)赋值方式 赋值符号为“=”,如:b=a; 语句结束时立即完成赋值操作,即b的值在该条件语句结束后立即改变 同一个块语句中,如果有多个阻塞赋值语句,那么前面的赋值操作没完成之前,后面的语句就不能被执行,仿佛被阻塞(blocking)了一样。 赋值语句—阻塞赋值与非阻塞赋值 always内阻塞赋值与非阻塞赋值的问题 例1:非阻塞赋值 例2:阻塞赋值 module non_block(c,b,a,clk); input clk,a; output b,c; reg b,c; always @(posedge clk) begin b <= a; c <= b; end endmo

文档评论(0)

共享文档 + 关注
实名认证
内容提供者

二级建造师持证人

该用户很懒,什么也没介绍

领域认证该用户于2023年10月07日上传了二级建造师

1亿VIP精品文档

相关文档