基于FPGA的数字系统设计.ppt_第1页
基于FPGA的数字系统设计.ppt_第2页
基于FPGA的数字系统设计.ppt_第3页
基于FPGA的数字系统设计.ppt_第4页
基于FPGA的数字系统设计.ppt_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,6.8 状态编码,状态分配、状态编码: 将一个码值分配给机器各个状态的任务。 状态编码决定了用以保持状态所需的触发 器的数量,并且影响着实现状态机下一状态和 输出逻辑的复杂度。 一个有N种状态的状态机将至少需要log2N 个触发器来存储状态编码。,2,手动分配状态编码的原则: 1、如果对于某个给定的输入,两个状态会跳转到 相同的下一状态,则给它们分配相邻的码值。 2、对相邻的状态分配相邻的码值。 3、对于某个给定的输入具有相同输出的状态,分 配相邻的码值。 以上原则可简化实现输出和下一状态功能的组合逻辑电路。,3,常见状态分配编码,4,Binary码: 使用最少数量的触发器,译码逻辑较复杂。 Gray码: 与Binary位数相同,其特点是两个相邻的码值仅变化一位,使用时可减少电路中的电噪声。 Johnson码: 特点同Gray码。但使用位数较多。 Gray码和Johnson码的优点是不会产生中间过渡状态。,5,One-Hot(独热)码、One-Cold(独冷)码: 每个状态只有一个触发器有效; 下一状态及输出译码逻辑简单; one-hot机有更快的速度; 状态的增减修改方便; 用较少的位完成状态转移,比二进制编 码更可靠。,6,6.9 隐式状态机、寄存器及 计数器的综合,状态机分为: 显式状态机(FSM)、 隐式状态机,7,6.9.1 隐式状态机,隐式状态机: 不能用明确的寄存器变量(reg)来表示状 态机的状态值,而是由周期性(always) 行为中动作的进程来隐性定义其状态。 任何一个在每个时钟周期中具有相同动作 流的时序机都是一个单周期隐式状态机,可用 一个状态来描述其动作。,8,always (posedge clk) begin reg_a=reg_b; /第一个周期执行 reg_c=reg_d; (posedge clk) begin reg_g=reg_f; /第二个周期执行 reg_m=reg_r; end end,隐式状态机可以内嵌多个时钟同步的事件控制表达式,多个事件控制表达式将行为动作分派到机器的不同时钟周期。,9,6.9.2 计数器综合,例6.29 4位行波计数器,10,11,6.9.3 寄存器综合,例6.31 触发器输出综合,module shift_1 ( output reg sig_d, new_signal, input data_in, clock, reset ); reg sig_a, sig_b, sig_c; always(posedge reset , posedge clock) begin if(reset=1b1) begin sig_a=0; sig_b=0; sig_c=0; sig_d=0; new_signal=0; end,12,else begin sig_a=data_in; sig_b=sig_a; sig_c=sig_b; sig_d=sig_c; new_signal=(sig_a) end end endmodule,13,综合电路,14,例6.32 组合输出综合,module shift_1 ( output reg sig_d, output new_signal, input data_in, clock, reset ); reg sig_a, sig_b, sig_c; always(posedge reset or posedge clock) begin if(reset=1b1) begin sig_a=0; sig_b=0; sig_c=0; sig_d=0; end,15,else begin sig_a=data_in; sig_b=sig_a; sig_c=sig_b; sig_d=sig_c; end end assign new_signal=(sig_a) endmodule,16,综合电路,17,6.10 复位,复位分为: 1、同步复位、异步复位: 同步复位稳定可靠、抗干扰。 异步复位不可靠,毛刺(glitch)会 产生干扰。 2、不完整复位、完整复位: 信号的复位必须完整。否则系统工作 不正常或综合出额外的逻辑。,18,例6.34 检测两个连续位是否相等,19,20,不完全复位仿真结果:,完全复位仿真结果:,21,不完全复位综合结果:,22,完全复位综合结果:,23,6.11 门控时钟与时钟使能综合,门控时钟(Gated Clocks) 由内部组合逻辑产生的信号作为时钟,又 称为阵列时钟。 派生时钟:由分频、倍频等产生的信号作为时钟。 门控(派生)时钟的问题: (1)容易产生“毛刺”,触发器工作不可靠 (2)增加了时钟偏移(skew) 应坚决避免使用门控时钟。,24,不可靠的门控(派生)时钟:,RCO,计数器,25,不可靠的门控(派生)时钟转换为全局时钟:,26,时钟使能描述与综合:,module best_gated_clock ( output reg q, input clock, reset_, data, data_gate ); always (posedge clock or negedge reset_) if(reset_=0) q=0; else if(data_gate) q=data; endmodule,27,综合电路:,28,6.12 可预期的综合结果,6.12.1 数据类型综合,设计中的输入输出综合时保留; 内部使用的线网变量在综合时可能会被删除; 寄存类型变量可能被综合成硬件寄存器; 未指定大小的整数会被综合成32位的硬件结构; 用定长数字(如:8b0110_1110)以减少所占 用的硬件资源; x值或z值没有对应的硬件生成。,29,6.12.2 运算符分组,运算符+, -, , = 可直接映射为一个 库单元,或转换成等效的布尔方程组。 移位运算符()在常数位移位 的条件下可综合。 条件运算符(?:)可综合成库mux或 完成mux功能的逻辑门。,30,例6.35 运算符分组 module operator_group ( output 4:0 sum1, sum2, input 3:0 a, b, c, d ); assign sum1=a+b+c+d; assign sum2=(a+b)+(c+d); endmodule,31,综合电路:,32,6.12.3 表达式替代,例6.36,33,34,35,36,6.13 循环的综合,Verilog的循环语句: for、 forever、 repeat、 while,37,静态循环: 循环的迭代次数在仿真前能由编译器确定(即迭代次数是固定的并且与数据无关)。 非静态循环: 循环的迭代次数是由运算中的某个变量决定的。与数据相关。,38,39,6.13.1 不带内嵌定时控制的 静态循环,例6.38 求数据中1的个数。 单个时钟周期内完成。 循环不包含内部定时控制,是一个静 态循环,即循环次数与输入数据无关。 循环计算生成组合逻辑电路,采用寄 存类型输出,40,41,仿真结果:,42,43,6.13.2 带内嵌定时控制的 静态循环,如果一个静态循环具有一个内嵌 边沿敏感事件控制表达式,该循环的 计算可以被外部时钟信号同步,并且 可分布在一个或多个时钟周期上。,44,例6.39 求数据中1的位数的等效描述一,45,46,例6.39 求数据中1的位数的等效描述二,47,48,例6.39 求数据中1的位数的等效描述三,49,三种描述的仿真结果:,50,6.13.3 不带内嵌定时控制的 非静态循环,对于仿真前不能确定循环次数的非静 态循环,如果该循环没有内嵌定时控制, 则其行为能够被仿真,但不能综合。 因为循环次数依赖于数据,此种循环 不能静态地展开。,51,例6.40,52,仿真结果:,53,仿真结果:,54,6.13.4 带内嵌定时控制的 非静态循环,带内嵌定时控制的非静态循环可以实现多周期运算。 数据依赖性并不是综合的障碍,可将循环的动作分布到多个时钟周期上实现。,55,例6.41 采用while循环内部的边沿敏感 定时控制,56,57,仿真结果:,输出计算时间可变,58,消除数据依赖性的描述方式:,59,60,61,仿真结果:,62,63,6.13.5 用状态机替代 不可综合的循环,综合工具不支持没有内嵌定时 控制的非静态循环。 其循环结构可由等效的可综合 时序行为替代。,64,例6.42,对数据字中的1计数的ASMD图,66,67,68,69,70,71,仿真结果:,72,73,例6.43 隐式状态机描述,74,75,6.15 设计划分,设计划分是高效逻辑综合的重要因素。划 分的不同方式会在很大程度上影响逻辑综合工 具的输出。 模块划分原则: (1)应沿功能线分割成较小的功能单元,每 个功能单元都有一个公共的时钟域,并 且每个功能单元都能独立地进行验证。,76,6.15 设计划分,模块划分原则: (2)功能相关的逻辑应组合在一起。 (3)不同时钟域的逻辑应封装在不同的划分块 中。用同步器使信号穿越不同的时钟域。 (4)不应把组合逻辑分配在模块之间,应保留 模块的边界。,77,划分技术 水平划分:使用位划分方式为逻辑综合工具提 供更小的模块进行优化。 垂直划分:把模块按功能划分成更小的模块。 并行化设计:用更多资源构成速度更快的设计。,78,逻辑综合建模技巧,完全同步设计,禁用门控时钟。 禁用计数器分频后的信号做其他模块的时钟。 一个模块只用一个时钟。 禁止采用混合上升沿与下降沿的设计。 进入FPGA的信号必须先同步,所有模块的输出都要寄存器化,提高系统的工作频率。,79,逻辑综合建模技巧,避免高层的循环结构 综合工具可能无法产生优化的结果。 避免嵌套使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论