《基于FPGA的数字系统设计6a.ppt》由会员分享,可在线阅读,更多相关《基于FPGA的数字系统设计6a.ppt(116页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1第第6章章 组合逻辑与时序逻辑组合逻辑与时序逻辑 的综合的综合卡诺图:卡诺图:人工设计方法的关键人工设计方法的关键可综合的可综合的HDL模型:模型:自动化设计方法的关键自动化设计方法的关键综合技术:综合技术:描述与实现的关键引擎描述与实现的关键引擎2综合的步骤综合的步骤(1 1)检测并消除冗余逻辑;)检测并消除冗余逻辑;(2 2)查找组合反馈环路;)查找组合反馈环路;(3 3)使用无关紧要条件;)使用无关紧要条件;(4 4)检测出未用状态;)检测出未用状态;(5 5)查找和避免相等的状态;)查找和避免相等的状态;(6 6)进行状态分配;)进行状态分配;(7 7)在物理工艺满足面积和)在物理工
2、艺满足面积和/或速度限制的或速度限制的 条件下,综合出最佳多级逻辑实现。条件下,综合出最佳多级逻辑实现。3 数字系统各个层次的描述与综合的关系:数字系统各个层次的描述与综合的关系:行为领域描述结构领域描述物理领域描述 算法层寄存器传输层逻辑层电路层版图层高层次综合RTL综合逻辑综合版图综合6.1 综合介绍综合介绍4 系统描述的系统描述的Y图:图:56.1.1 逻辑综合逻辑综合逻辑级描述:逻辑级描述:一系列连续赋值语句或等效电平敏感行一系列连续赋值语句或等效电平敏感行为描述的一组布尔方程。为描述的一组布尔方程。逻辑综合:逻辑综合:将逻辑电路描述将逻辑电路描述转换转换成一个成一个优化优化的基本的基
3、本门原语网表,并把优化网表门原语网表,并把优化网表映射映射成由目标工成由目标工艺物理资源组成的等效电路结构。艺物理资源组成的等效电路结构。6逻辑综合工具的构成逻辑综合工具的构成76.1.2 RTL综合综合RTL描述描述:一个有限状态机;或一个可以在一个预一个有限状态机;或一个可以在一个预定义的时钟周期边界上进行寄存器传输的更定义的时钟周期边界上进行寄存器传输的更一般的时序状态机。一般的时序状态机。RTL综合综合:从一个结构开始,把基于语言的从一个结构开始,把基于语言的RTL描描述转换成可通过逻辑综合工具进行优化的一述转换成可通过逻辑综合工具进行优化的一组布尔方程。组布尔方程。86.1.3 高级
4、综合高级综合行为(算法)描述行为(算法)描述:仅描述电路的功能,不涉及具体实现细节。仅描述电路的功能,不涉及具体实现细节。高级综合高级综合:行为综合、结构综合。其目标是寻找一个能实行为综合、结构综合。其目标是寻找一个能实现某种算法,且资源可被调度和分配的结构形式。现某种算法,且资源可被调度和分配的结构形式。两个主要步骤两个主要步骤:资源分配、资源调度。产生一个包含数据通道资源分配、资源调度。产生一个包含数据通道单元、控制单元和存储器的电路结构。单元、控制单元和存储器的电路结构。910行为描述行为描述/综合的优点:综合的优点:1.代码简洁直观代码简洁直观 代码长度是代码长度是RTL级代码的级代码
5、的 1/5 1/32.仿真速度快仿真速度快3.设计空间大设计空间大4.提高了设计再利用性提高了设计再利用性5.自动化程度高自动化程度高116.2 组合逻辑综合组合逻辑综合可综合的组合逻辑描述方式:可综合的组合逻辑描述方式:(1)结构化的基本门网表;)结构化的基本门网表;(2)一系列连续赋值语句;)一系列连续赋值语句;(3)一个电平敏感的周期性行为。)一个电平敏感的周期性行为。12例6.6 结构化基本门网表的综合结构化基本门网表的综合1314综合工具:综合工具:一般要求所需综合的逻辑是无反馈环的一般要求所需综合的逻辑是无反馈环的结构形式(如:没有交叉耦合的与非门)。结构形式(如:没有交叉耦合的与
6、非门)。函数和任务:函数和任务:不包含不完整的不包含不完整的case语句和语句和 if语句,也语句,也不包含内嵌的时间控制(不包含内嵌的时间控制(#、或或wait),),则可综合成为组合逻辑。则可综合成为组合逻辑。156.2.1 优先级结构的综合优先级结构的综合 case语句语句:通常隐含指定对首先解码的项赋予较高的优先权。通常隐含指定对首先解码的项赋予较高的优先权。if 语句语句:隐含指定第一个分支具有比其余分支较高的优先权。隐含指定第一个分支具有比其余分支较高的优先权。综合工具处理综合工具处理:(1)如分支选择项互不相同,则认为具有相等的优先)如分支选择项互不相同,则认为具有相等的优先级别
7、,综合成为一个级别,综合成为一个mux而不是优先级结构。而不是优先级结构。(2)即使分支选择项不是互不相同,也可由用户决定)即使分支选择项不是互不相同,也可由用户决定处理方式。处理方式。16 例例6.10 具有优先级的具有优先级的4选选1电路电路 module mux_4pri(output reg y,input a,b,c,d,sel_a,sel_b,sel_c);always (sel_a,sel_b,sel_c,a,b,c,d)/always (*)begin if(sel_a=1)y=a;else if(sel_b=0)y=b;else if(sel_c=1)y=c;else y=d
8、;end endmodule1718b_late 如果b_late比其它信号晚到,如何在保证原优先级不变的条件下,修改设计使电路的时序更加优化?19设计思路:将晚到的信号移向输出端,并增设计思路:将晚到的信号移向输出端,并增 加相关控制逻辑。加相关控制逻辑。控制逻辑20 针对针对b_late信号优化的信号优化的4选选1电路电路always (sel_a,sel_b,sel_c,a,b_late,c,d)begin if(sel_b=0)&(sel_a=0)y=b_late;else if(sel_a=1)y=a;else if(sel_c=1)y=c;else y=d;end216.2.2 逻
9、辑无关项的使用逻辑无关项的使用 case语句、条件分支(语句、条件分支(if语句)和条件赋语句)和条件赋值(值(?:)中)中default语句的使用:语句的使用:(1)default语句赋明确的语句赋明确的0值或值或1值。前、值。前、后仿真一致。后仿真一致。(2)default语句赋明确的语句赋明确的x值或值或z值。前、值。前、后仿真可能不一致。后仿真可能不一致。x、z作为任意项处理,可综合出更简洁作为任意项处理,可综合出更简洁的电路。的电路。22例例6.11 带锁存的七段码显示带锁存的七段码显示2324252627例6.12 使用无关项对电路综合的影响使用无关项对电路综合的影响 module
10、 alu_with_z1(output alu_out,input 2:0 opcode,input 3:0 data_a,data_b,input enable);reg 3:0 alu_reg;assign alu_out=(enable=1)?alu_reg:4bz;always (opcode or data_a or data_b)case(opcode)3b001:alu_reg=data_a|data_b;3b010:alu_reg=data_a data_b;3b110:alu_reg=data_b;default:alu_reg=4b0;endcase endmodule28
11、综合电路:综合电路:29 module alu_with_z2(output alu_out,input 2:0 opcode,input 3:0 data_a,data_b,input enable);reg 3:0 alu_reg;assign alu_out=(enable=1)?alu_reg:4bz;always (opcode or data_a or data_b)case(opcode)3b001:alu_reg=data_a|data_b;3b010:alu_reg=data_a data_b;3b110:alu_reg=data_b;default:alu_reg=4bx;
12、endcase endmodule30综合电路:综合电路:316.2.3 资源共享资源共享 可用括号来控制操作符分组,使资源在一条或多条路可用括号来控制操作符分组,使资源在一条或多条路径上共享。径上共享。assign y_out=sel?data_a+accum:data_a+data_b;module res_share(output 4:0 y_out,input 3:0 data_a,data_b,accum,input sel);assign y_out=data_a+(sel?accum:data_b);endmodule32共享资源数据通道的实现:共享资源数据通道的实现:336.3
13、 带锁存器的时序逻辑综合带锁存器的时序逻辑综合锁存器产生的两种方法锁存器产生的两种方法:(1)有意识综合)有意识综合 (2)无意识综合)无意识综合34锁存器的弱点锁存器的弱点:锁存器占用较多的触发器资源,不稳定,锁存器占用较多的触发器资源,不稳定,并且对并且对FPGA常常是无效的。常常是无效的。35组合逻辑综合要点组合逻辑综合要点:(1)一个无反馈的)一个无反馈的组合基本门网表组合基本门网表可以综合成可以综合成 无锁存功能的组合逻辑。无锁存功能的组合逻辑。(2)一组无反馈的)一组无反馈的连续赋值语句连续赋值语句可以综合为可以综合为 无锁存功能的组合逻辑。无锁存功能的组合逻辑。(3)使用一个带有
14、反馈的条件操作符的连续赋)使用一个带有反馈的条件操作符的连续赋 值语句可以综合成为一个值语句可以综合成为一个锁存器锁存器。例例6.15 SRAM存储器单元的建模存储器单元的建模 assign data_out=(CS_b=0)?(WE_b=0)?data_in:data_out:1bz;366.3.1 锁存器的无意识综合锁存器的无意识综合避免出现锁存的方法避免出现锁存的方法:1、使用完备的、使用完备的 if else,或,或 case 语句;语句;2、避免组合逻辑反馈环路;、避免组合逻辑反馈环路;3、为每个输入条件,定义输出操作;、为每个输入条件,定义输出操作;4、事件控制表达式中的敏感信号必
15、须完整;、事件控制表达式中的敏感信号必须完整;5、状态机设计中,定义、状态机设计中,定义default 的状态转移;的状态转移;6、定义缺省值(、定义缺省值(default值)值)。37例6.16 4输入或门y_behav38例6.16 4输入或门y_gatey_latchy_or4394041例例6.17 不完备的不完备的case语句语句 module mux_latch(output reg y_out,input sel_a,sel_b,data_a,data_b);always (sel_a or sel_b or data_a or data_b)case(sel_a,sel_b)2
16、b10:y_out=data_a;2b01:y_out=data_b;endcase endmodule42综合电路:综合电路:436.3.2 锁存器的有意识综合锁存器的有意识综合 (1)在电平敏感行为中,如果)在电平敏感行为中,如果if语句语句在某些分支而不是全在某些分支而不是全部分支中对一个寄存器变量赋值(即语句不完整),部分支中对一个寄存器变量赋值(即语句不完整),则可综则可综合成为一个锁存器。合成为一个锁存器。例例6.19 常用的锁存器描述常用的锁存器描述 module latch_if2(output reg 3:0 data_out,input 3:0 data_in,input
17、latch_enable);always (latch_enable or data_in)if(latch_enable)data_out=data_in;endmodule44综合电路:综合电路:45 (2)在)在case 语句、语句、if语句、条件操作符(语句、条件操作符(?:)中,)中,如果如果变量将其值显式赋给它本身变量将其值显式赋给它本身,综合工具将形成一个具有,综合工具将形成一个具有反馈的反馈的mux结构,综合成为一个锁存器。结构,综合成为一个锁存器。例例6.18 具有反馈具有反馈mux结构的锁存器结构的锁存器 module latch_if1(output reg 3:0 da
18、ta_out,input 3:0 data_in,input latch_enable);/assign data_out=latch_enable?data_in:data_out;always (latch_enable or data_in)if(latch_enable)data_out=data_in;else data_out=data_out;endmodule46综合电路:综合电路:476.4 三态器件的综合和总线接口三态器件的综合和总线接口单向总线接口单向总线接口48 例例6.21 单向总线接口单向总线接口 module Uni_dir_bus(output 31:0 dat
19、a_to_bus,input bus_enable);reg 31:0 ckt_to_bus;assign data_to_bus=(bus_enable)?ckt_to_bus:32bz;/驱动驱动ckt_to_bus的电路描述的电路描述 endmodule49双向总线接口双向总线接口50 例例6.22 双向总线接口双向总线接口 module Bi_dir_bus(inout 31:0 data_to_from_bus,input send_data,rcv_data);wire 31:0 ckt_to_bus;wire 31:0 data_to_from_bus,data_from_bus
20、;assign data_from_bus=(rcv_data)?data_to_from_bus:32bz;assign data_to_from_bus=(send_data)?ckt_to_bus:32bz;/产生产生ckt_to_bus和使用和使用data_from_bus的行为在此描述的行为在此描述 endmodule516.5 带触发器的时序逻辑综合带触发器的时序逻辑综合触发器的综合触发器的综合:由边沿敏感周期性行为中寄存器变由边沿敏感周期性行为中寄存器变量赋值而综合产生的。量赋值而综合产生的。问题问题:在边沿敏感的行为中赋值的每一个在边沿敏感的行为中赋值的每一个寄存器变量是否都能
21、综合成触发器?寄存器变量是否都能综合成触发器?52边沿敏感行为中触发器综合的条件:边沿敏感行为中触发器综合的条件:(1)如果寄存器变量在行为描述的范围以外)如果寄存器变量在行为描述的范围以外 被使用。被使用。(2)如果寄存器变量在被赋值之前,已在行)如果寄存器变量在被赋值之前,已在行 为描述中使用。为描述中使用。(3)如果寄存器变量仅在行为描述动作的某)如果寄存器变量仅在行为描述动作的某 些分支上被赋值。些分支上被赋值。均隐含着对存储器或对原有值保存的需求。均隐含着对存储器或对原有值保存的需求。53例例6.25 empty_circuit module empty_circuit(input
22、D_in,input clk);reg D_out;always (posedge clk)begin D_out=D_in;end endmodule 仅在行为内部使用,而在行为外部不使用仅在行为内部使用,而在行为外部不使用的变量将被综合工具删除的变量将被综合工具删除5455例6.23 同步数据交换同步数据交换 module swap_synch(output reg data_a,data_b,input clk,set1,set2);always (posedge clk)begin if(set1)begin data_a=1;data_b=0;end else if(set2)beg
23、in data_a=0;data_b=1;end else begin data_b=data_a;data_a=data_b;end end endmodule 5657例6.23 同步数据交换同步数据交换 module swap_synch(output reg data_a,data_b,input clk,set1,set2);always (posedge set1 or posedge set2 or posedge clk)begin if(set1)begin data_a=1;data_b=0;end else if(set2)begin data_a=0;data_b=1;
24、end else begin data_b=data_a;data_a=data_b;end end endmodule 58 在一个边沿敏感周期性行为的事件控制在一个边沿敏感周期性行为的事件控制表达式后的语句中,信号由译码的顺序决定表达式后的语句中,信号由译码的顺序决定哪一个边沿敏感信号是控制信号,哪一个是哪一个边沿敏感信号是控制信号,哪一个是时钟(同步信号)。时钟(同步信号)。控制信号必须在控制信号必须在if语句的分支中显式译语句的分支中显式译码,同步时钟不会被显式译码,但同步动作码,同步时钟不会被显式译码,但同步动作必须在必须在if语句的最后一个分支中描述。语句的最后一个分支中描述。控制
25、信号与同步信号控制信号与同步信号596.6 显式状态机的综合显式状态机的综合显式状态机:显式状态机:一个已明确定义的状态寄存器;一个已明确定义的状态寄存器;一个能够在输入的作用下控制状态转换的逻辑。一个能够在输入的作用下控制状态转换的逻辑。描述方式:描述方式:同步状态转换过程的边沿敏感行为(时序逻辑,同步状态转换过程的边沿敏感行为(时序逻辑,用用“=”非阻塞赋值);非阻塞赋值);描述下一个状态和输出逻辑的电平敏感行为(组描述下一个状态和输出逻辑的电平敏感行为(组合逻辑,用合逻辑,用“=”阻塞赋值)。阻塞赋值)。60Mealy型和型和Moore型状态机型状态机616.6.1 BCD码到余码到余3
26、码转换器的综合码转换器的综合 本设计是将一个串行发送的本设计是将一个串行发送的BCD码码B_in转换成一个余转换成一个余3码串行比特流码串行比特流B_out。余余3码的定义:码的定义:给给BCD码对应的十进制数加上码对应的十进制数加上310,并将,并将其转换为等价的二进制数即为该十进制数的其转换为等价的二进制数即为该十进制数的余余3码。码。62BCD码与余码与余3码码十进制数字十进制数字BCD码码余余3码码00000001110001010020010010130011011040100011150101100060110100170111101081000101191001110063BCD
27、码到余码到余3码串行转换器的输入码串行转换器的输入-输出位流输出位流64BCD码到余码到余3码串行转换器的状态转移图码串行转换器的状态转移图65 bcd_to_excess_3b的的Verilog描述描述:6667 bcd_to_excess_3c的的Verilog描述描述:6869综合电路比较:综合电路比较:70仿真结果:仿真结果:71仿真结果:仿真结果:72结论:结论:Bcd_to_excess_3c中的任意项赋值中的任意项赋值相比相比bcd_to_excess_3b的隐含锁存器结的隐含锁存器结构可以给综合工具带来更大的灵活性。构可以给综合工具带来更大的灵活性。建议:建议:在所有的在所有的
28、case语句中都包含语句中都包含default赋值语句。赋值语句。73 可综合的状态机设计要求:可综合的状态机设计要求:(1)必须为显式状态机的状态寄存器分配一个)必须为显式状态机的状态寄存器分配一个 集合值集合值,即不能对变量的部分位赋值。,即不能对变量的部分位赋值。(2)全部寄存器都要赋值。)全部寄存器都要赋值。(3)异步控制信号(如)异步控制信号(如set和和reset)在行为的)在行为的 事件控制表达式中必须是标量。事件控制表达式中必须是标量。(4)状态寄存器赋值必须是常量,或是可静态)状态寄存器赋值必须是常量,或是可静态 求值的变量。求值的变量。746.6.2 Mealy型型NRZ码
29、码/Manchester 线性码转换器的综合线性码转换器的综合 线码(线码(line code)用于数据传输或存储)用于数据传输或存储系统。优点如下:系统。优点如下:(1)降低串行通信信道噪声的影响)降低串行通信信道噪声的影响 (2)减小数据通道的宽度)减小数据通道的宽度 (3)有利于接收端数据时钟的恢复)有利于接收端数据时钟的恢复75串行线码格式与样本波形串行线码格式与样本波形76 Mealy型型NRZ-曼彻斯特线码转换器曼彻斯特线码转换器 (a)状态转移图()状态转移图(b)下一状态表)下一状态表77Mealy型型NRZ-曼彻斯特线码转换器曼彻斯特线码转换器Verilog描述:描述:787
30、9仿真结果:仿真结果:806.6.3 Moore型型NRZ码码/Manchester 线性码转换器的综合线性码转换器的综合818283仿真结果:仿真结果:846.6.4 序列检测器的综合序列检测器的综合 当在串行输入中接收到一个给定模式的连当在串行输入中接收到一个给定模式的连续比特流时,序列检测器将产生一个有效输出。续比特流时,序列检测器将产生一个有效输出。状态机状态的转换和数据同步可以分别采状态机状态的转换和数据同步可以分别采用时钟的用时钟的相反边沿相反边沿。序列检测器可用序列检测器可用Mealy型或型或Moore型确定型确定状态机实现。状态机实现。85设计考虑:设计考虑:(1)Mealy机
31、的输出与输入直接相关;机的输出与输入直接相关;Moore机的输出与输入无关,与状态相关。机的输出与输入无关,与状态相关。“111”序列检测器的序列检测器的Mealy/Moore输出输出86设计考虑:设计考虑:(2)区分复位与非复位状态机)区分复位与非复位状态机 当输入序列出现重叠时,非复位状态机的当输入序列出现重叠时,非复位状态机的输出保持有效。输出保持有效。复位状态机对于嵌入在更长序列中的一个复位状态机对于嵌入在更长序列中的一个m位序列,当第位序列,当第m+1位出现时,输出复位,且位出现时,输出复位,且对后续的输入进行新的检测。对后续的输入进行新的检测。87“111”序列检测器的复位与非复位
32、输出序列检测器的复位与非复位输出88“111”序列检测器序列检测器Mealy型型ASM图图89“111”序列检测器序列检测器Moore型型ASM图图90序列检测器序列检测器Mealy型描述:型描述:9192序列检测器序列检测器Moore型描述:型描述:9394序列检测器的序列检测器的testbench:9596序列检测器仿真结果:序列检测器仿真结果:97Mealy glitch9899序列检测器的简化描述:序列检测器的简化描述:序列检测器可作为一个对输入数据序列检测器可作为一个对输入数据进行移位操作的移位寄存器,并检测该进行移位操作的移位寄存器,并检测该寄存器的内容是否与要检测的序列相匹寄存器
33、的内容是否与要检测的序列相匹配。配。100基于移位寄存器的基于移位寄存器的Mealy型序列检测器型序列检测器101基于移位移位寄存器的基于移位移位寄存器的Mealy型序列检测器型序列检测器102基于移位寄存器的基于移位寄存器的Moore型序列检测器型序列检测器103基于移位寄存器的基于移位寄存器的Moore型序列检测器型序列检测器104基于移位寄存器的序列检测器仿真结果:基于移位寄存器的序列检测器仿真结果:1056.7 寄存逻辑寄存逻辑变量输出的寄存处理:变量输出的寄存处理:利用时钟信号同步进行赋值的变量称为利用时钟信号同步进行赋值的变量称为被寄存。被寄存的信号在时钟的有效沿处更被寄存。被寄存
34、的信号在时钟的有效沿处更新,在其它时间保持稳定。新,在其它时间保持稳定。Mealy型和型和Moore型的输出均是未被寄型的输出均是未被寄存的。存的。106带寄存器输出的带寄存器输出的Mealy机机107带寄存器输出的带寄存器输出的Moore机机108带下一状态功能寄存器输出的带下一状态功能寄存器输出的Mealy机机109带下一状态功能寄存器输出的带下一状态功能寄存器输出的Moore机机110 序列检测器寄存器输出的描述序列检测器寄存器输出的描述Mealy型:型:reg d_out;always(negedge clk)d_out=(state=s_2)&(d_in=1);Moore型:型:reg d_out;always(negedge clk)d_out=(state=s_3);111带寄存器输出的序列检测器仿真结果:带寄存器输出的序列检测器仿真结果:112113例6.28 NRZI_mealy波形生成114NRZI_mealy波形生成的状态转移图:115116仿真结果仿真结果:invalid