《第三讲 可综合VerilogHDL》由会员分享,可在线阅读,更多相关《第三讲 可综合VerilogHDL(61页珍藏版)》请在金锄头文库上搜索。
1、电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 1基于基于FPGA的嵌入式系统设计的嵌入式系统设计电工电子工程基础电工电子工程基础王贞炎王贞炎电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 23 可综合可综合VerilogHDL设计设计3.1 FPGA中逻辑中逻辑设计的设计的一些概念和原则一些概念和原则3.2 组合逻辑的建模组合逻辑的建模3.3 时序逻辑的建模时序逻辑的建模3.4 存储器的建模与使用存储器的建模与使用3.5 有限
2、状态机的建模有限状态机的建模3.6 课堂操作实验课堂操作实验电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 33.1 FPGA中逻辑设计的一些概念和原则中逻辑设计的一些概念和原则3.1.1 一些基本概念一些基本概念3.1.2 同步设计同步设计3.1.3 串并操作串并操作3.1.4 流水线流水线3.1.5 异步时钟域处理异步时钟域处理电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 43.1.1 一些基本概念一些基本概念3.1.1.
3、1 面积和速度面积和速度面积:是指一个设计所消耗FPGA,可理解为一个设计在FPGA中占用的“面积”。主要由LE衡量,还包括RAM和DSP块等。速度:是指一个设计在FPGA芯片上能稳定运行的最高频率。“面积”和“速度”是一对对立统一的矛盾体。可以用更多的逻辑资源实现更快速的处理,也可以牺牲速度用较少的逻辑资源“面积”和“速度”互换。科学的设计目标是:在满足设计时序要求的前提下,占用最小的芯片面积;或者在所规定的面积下,使设计的时序余量更大,频率更高。电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 53.1.1
4、一些基本概念一些基本概念3.1.1.1 Verilog描述的逻辑的并行性描述的逻辑的并行性Verilog很多语法规则和C语言相似,但两者有本质区别!在编写Verilog代码时,要始终记住:“我在描述一个硬件电路的连接,而不是顺序执行的代码。”,对于一个硬件电路,在Verilog描述中各部分语句的“执行”是并发的。一个HDL代码的优劣的最终评价标准是其描述实现的硬件电路的性能(包括面积和速度两个方面),而不能只是片面地追求代码的简洁。在编写Verilog代码前,应先对系统要实现的硬件电路的连接在大体上和关键点上有一个明确地规划。硬件描述语言是描述硬件的,要实现对硬件实现“胸有成竹”,才能描述得好
5、。电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 63.1.1 一些基本概念一些基本概念3.1.1.1 合理分配模块合理分配模块在设计一个较大的系统时,往往需要将系统分为多个模块。模块的划分是需要合理考虑的。按实际功能划分模块。划分出来的模块的端口意义尽量简明。一个模块自成一体,调用模块者绝对不需要知道模块内部原理,绝对不需要干涉内部工作过程。模块规模合理。电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 73.1.1 一些基本概
6、念一些基本概念3.1.1.1 合理利用资源合理利用资源在设计一个电子系统时,要了解,什么样的功能适合用LE实现,什么样的功能时候由DSP、CPU实现(包括FPGA内部的DSP、CPU)。实时性要求高、频率高、大量并行的功能模块适合使用传统的FPGA逻辑实现。在FPGA内部设计时,要对的FPGA全局有宏观上的合理安排,比如时钟、模块组织结构、RAM的利用、面积和速度等问题。善于利用片内RAM、乘法器。电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 83.1.2 同步设计同步设计3.1.2.1 同步和异步设计同步和
7、异步设计异步数字电路:电路的核心逻辑用组合电路实现;电路的主要信号并不依赖任何一个时钟性信号;容易产生毛刺,出现竞争冒险;不利于器件移植、不利于时序分析与验证。同步数字电路:电路核心逻辑用各种触发器实现;电路的主要信号都是由某个时钟沿驱动产生的;可以很好地避免毛刺;有利于器件移植和时序分析及验证。可编程器件成本越来越低,综合效果越来越强,现代PLD设计首选同步时序设计方式!电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 93.1.2 同步设计同步设计3.1.2.2 同步设计的原则同步设计的原则所有信号均由时钟驱
8、动,并且在同一个设计内,最好只由同一个时钟驱动。在同步设计中,一切逻辑均可简化为由下面的结构罗列而成电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 103.1.2 同步设计同步设计3.1.2.3 建立时间和保持时间建立时间和保持时间 建立时间(TSU):在时钟有效沿之前数据必须保持稳定的最小时间保持时间(TH):在时钟有效沿之后数据必须保持稳定的最小时间建立时间和保持时间形成一个时间窗,在此窗之内,数据必须保持稳定。同步设计的速度限制,根本上源于建立时间和保持时间的要求电工电子科技创新中心电工电子科技创新中心基
9、于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 113.1.2 同步设计同步设计3.1.2.4 统一时钟和时钟使能!统一时钟和时钟使能!在同一个设计中,尽量让所有的模块使用同一时钟,让所有的“always(xxxedge clk)”中的clk是同一个clk。系统中不同部分的信号速率可能不一样,使用时钟使能控制处理速率。 例如:要让一个模块以1/8时钟工作:电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 123.1.2 同步设计同步设计3.1.2.4 统一时钟和数据使能!
10、统一时钟和数据使能! 数据流处理模块的端口建议,使用于一切对单个数据处理需要数个、甚至不确定数目的时钟周期的情况。Clk:工作时钟ARst:异步复位DataIn:数据输入DataEn:输入数据有效DataOut:数据输出DataValid:输出数据有效指示每一级的DataValid接至后级的DataEn。DataEn有效时,采入数据进行处理。处理完数据输出的同时让DataValid有效,通知下级。电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 133.1.3 串并操作串并操作“串并操作”是面积速度互换原则的直接
11、体现。将串行转换为并行,一般旨在通过复制逻辑,提高整个设计的设计吞吐量,其本质是通过面积的消耗提高系统的工作速率。将并行转换为串行,一般旨在节约资源,因为设计速度有足够的余量,通过提高串行通道的工作速率而节约了面积,其本质是通过速度的提高节约芯片面积。如串行加法器,乘法器,除法器等。电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 143.1.4 流水线流水线流水线处理是高速设计中的常用设计手段,是面积换取速度原则的又一具体体现。时序逻辑处理数据流就是天然的流水线结构。流水线的结构示例:电工电子科技创新中心电工电
12、子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 153.1.4 流水线流水线流水线示例:Y=|A|*100-100电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 163.1.5 异步时钟域处理异步时钟域处理如果连续两个数据处理模块需要使用不同的时钟,前级的数据由一个时钟驱动输出,而后级的输入却有另一个时钟采入。这时出现时钟异步。异步域数据同步也是FPGA设计的一个较常见问题,处理不好往往会影响系统稳定。异步时钟域同步的表现形式:同频异相问题,两个时钟域频
13、率相同,但相差不固定。异频问题,两个时钟域的频率不同。电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 173.1.5 异步时钟域处理异步时钟域处理一般同步方法:两级寄存器采样,即用后级时钟对前级数据采样两次。这种做法可以有效地减少亚稳态的传播,使后级电平都是有效电平值,但不一定是正确电平值。该方法适用于对错误不敏感的同频异相时钟域数据的同步。使用FIFO,可以可靠解决异步时钟域数据的同步问题,注意数据满和空:前级时钟大于后级时钟,注意写满;前级时钟小于后级时钟,注意读空。电工电子科技创新中心电工电子科技创新中心
14、基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 183.1.5 异步时钟域处理异步时钟域处理特殊情况转换低频时钟为时钟使能:如果低频时钟频率远低于高频时钟,建议用高频时钟将低频时钟同步为单周期使能信号。典型例子:用外部处理器(或用NIOS PIO)与FPGA逻辑交互。外部处理器送来的时钟可能很慢。电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 193.2 组合逻辑的建模组合逻辑的建模3.2.1 方法一方法一数据流建模数据流建模参数化的奇偶校验器3.2.2 方法二方法二
15、行为建模行为建模BCD7段译码器3.2.3 方法三方法三结构建模结构建模双向信号接口电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 203.2.1 组合逻辑的数据流建模组合逻辑的数据流建模参数化的奇偶校验器的建模参数化的奇偶校验器的建模module ParityGenerator(DataIn,OddPar,EvenPar); parameter NBITS=4; input NBITS-1:0 DataIn; output OddPar,EvenPar; assign EvenPar=DataIn; assi
16、gn OddPar=EvenPar;endmodule电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 213.2.2 组合逻辑的行为建模组合逻辑的行为建模BCD7段译码器的建模段译码器的建模module bcd2led(a,b,c,d,e,f,g,D3,D2,D1,D0); output a,b,c,d,e,f,g; input D3,D2,D1,D0; reg a,b,c,d,e,f,g; always(D3 or D2 or D1 or D0) begin case(D3,D2,D1,D0) 4d0: a,
17、b,c,d,e,f,g=7b1111110; 4d1: a,b,c,d,e,f,g=7b0110000; 4d2: a,b,c,d,e,f,g=7b1101101; 4d3: a,b,c,d,e,f,g=7b1111001; 4d4: a,b,c,d,e,f,g=7b0110011; 4d5: a,b,c,d,e,f,g=7b1011011; 4d6: a,b,c,d,e,f,g=7b1011111; 4d7: a,b,c,d,e,f,g=7b1110000; 4d8: a,b,c,d,e,f,g=7b1111111; 4d9: a,b,c,d,e,f,g=7b1111011; default
18、: a,b,c,d,e,f,g=7b0000000; endcase endendmodule电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 223.2.3 组合逻辑的结构建模组合逻辑的结构建模双向信号接口的建模双向信号接口的建模module EE_SSTL(O,I,IO,E,BI); output O; input I,E,BI; inout IO; wire q1; bufif1 g1(IO,I,E); bufif1 g2(q1,IO,BI); buf g3(O,q1);endmodule电工电子科技创新中
19、心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 233.3 时序逻辑的建模时序逻辑的建模3.3.1 触发器建模触发器建模异步清零或置位同步清零或置位3.3.2 锁存器建模锁存器建模异步清零或置位3.3.3 计数器建模计数器建模二进制计数器模N计数器格雷码计数器3.3.4 移位寄存器建模移位寄存器建模3.3.5 一些设计的注意事项一些设计的注意事项电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 243.3.1 触发器建模触发器建模3.3.1.1 异
20、步置位清零异步置位清零D触发器触发器module AsyncPreClrDFF(clk,clear,preset,data,q); input clk,clear,data,preset; output q; reg q; always(posedge clk or posedge clear or posedge preset) if(preset) q=1b1; else if(clear) q=1b0; else q=data;endmodule电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 253.3.
21、1 触发器建模触发器建模3.3.1.2 同步置位清零同步置位清零D触发器触发器module SyncPreClrDFF(clk,clear,preset,data,q); input clk,clear,data,preset; output q; reg q; always(negedge clk) if(preset) q=1b1; else if(clear) q=1b0; else q=data;endmodule电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 263.3.2 锁存器建模锁存器建模3.3
22、.2.1 异步置位清零锁存器异步置位清零锁存器module AsyncPreClrLatch(clk,clear,preset,data,q); input clk,clear,data,preset; output q; reg q; always(clk or clear or preset or data) if(preset) q=1b1; else if(clear) q=1b0; else if(clk) q=data;endmodule电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 273.3.3
23、 计数器建模计数器建模3.3.3.1 二进制计数器二进制计数器module BinaryCounter(Ck,UpDown,PresetClear,LoadData,DataIn,Q,QN); parameter NBITS=2; input Ck,UpDown,PresetClear,LoadData; input NBITS-1:0 DataIn; output NBITS-1:0 Q,QN; reg NBITS-1:0 Counter; always(posedge Ck) if(PresetClear) Counter=0; else if(LoadData) Counter=Data
24、In; else if(UpDown) Counter=Counter+1; else Counter=Counter-1; assign Q=Counter; assign QN=Counter;endmodule电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 283.3.3 计数器建模计数器建模3.3.3.2 模模N计数器计数器module ModuloN_Cntr(Clock,Clear,Q,QBAR); parameter NBITS=2,UPTO=3; input Clock,Clear; outpu
25、t NBITS-1:0 Q,QBAR; reg NBITS-1:0 Counter; always(posedge Clock) if(Clear) Counter=0; else Counter=(Counter+1)%UPTO; assign Q=Counter; assign QBAR=Counter;endmodule电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 293.3.3 计数器建模计数器建模3.3.3.3 格雷码计数器格雷码计数器转换规则:格雷码最高位与二进制码最高位相同;格雷码的次高位是其二
26、进制码的最高位和次高位异或的结果;依次类推,直到最低位。module GrayCounter(ClockG,Clear,Q,QN); parameter NBITS=2; input ClockG,Clear; output 1:NBITS Q,QN; reg 1:NBITS Counter,GrayCount; integer K; always(posedge ClockG) if(Clear) Counter=0; else Counter=Counter+1; always(Counter) begin GrayCount1=Counter1; for(K=2;K=NBITS;K=K+
27、1) GrayCountK=CounterK-1CounterK; end assign Q=GrayCount; assign QN=GrayCount;endmodule序号二进制右移一位格雷码00000000001001000001201000101130110010104100010110510101011161100111017111011100电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 303.3.4 移位寄存器建模移位寄存器建模3.3.3.4 3位通用移位寄存器的综合模型位通用移位寄存器的综合
28、模型具备功能:保持、左移、右移、载入。module UnivShiftRegister(Clock,Clear,LeftIn,RightIn,S0,S1,ParIn,Q); input Clock,Clear,LeftIn,RightIn,S0,S1; input 2:0 ParIn; output 2:0 Q; reg 2:0 Q; always(negedge Clear or posedge Clock) if(!Clear) Q=3b000; else case(S0,S1) 2b00: ; 2b01: Q=Q1:0,RightIn; 2b10: Q=LeftIn,Q2:1; 2b11
29、: Q=ParIn; endcaseendmodule电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 313.3.5 一些设计的注意事项一些设计的注意事项3.3.5.1 避免组合逻辑反馈环路避免组合逻辑反馈环路组合逻辑反馈环路( Combinational Loops)是 PLD设计的大忌!它最容易因振荡、毛刺、时序违规等引起整个系统的不稳定和不可靠。处理方法:牢记任何反馈环路必须包含寄存器。检查综合、实现报告的Warning信息,发现Combinational Loops后进行相应修改。电工电子科技创新中心电
30、工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 323.3.5 一些设计的注意事项一些设计的注意事项3.3.5.2 替换延迟链替换延迟链延迟链是异步时序设计的常用手段,特别是在早期PLD设计和当代ASIC设计中,经常使用Delay Chains实现两个结点间的延迟调整。当代PLD设计推荐使用同步实现设计方法,一般要避免使用异步的Delay Chains。在同步时序设计中,取代异步Delay Chains的最常用方法是用分频或倍频的时钟或者同步计数器完成所需延迟。电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Sp
31、ring 2010可综合VerilogHDL设计Slide 333.3.5 一些设计的注意事项一些设计的注意事项3.3.5.3 替换异步脉冲产生单元替换异步脉冲产生单元:在异步设计中,常用Delay Chains完成脉冲产生:常用的同步脉冲产生方法:电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 343.3.5 一些设计的注意事项一些设计的注意事项3.3.5.4 慎用锁存器慎用锁存器同步逻辑设计要避免使用Latch。综合出与设计意图不吻合的Latch结构的主要原因有:在设计组合逻辑时,使用不完全的条件判断语句,
32、如if没有else,或不完整的case语句;设计中存在组合逻辑的反馈环路。防止产生非目的性Latch的方法:使用完备的ifelse语句;检查设计中是否含有组合逻辑反馈环路;为每个输入条件设计输出操作,对case语句设置默认操作;使用case语句时,特别是在设计状态机时,尽量附加综合约束属性,综合为完全条件case语句(full case)。电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 353.3.5 一些设计的注意事项一些设计的注意事项3.3.5.5 同步时序电路推荐的时钟设计方法同步时序电路推荐的时钟设计方
33、法时钟经全局时钟输入引脚输入,通过FPGA内部专用PLL进行分频/倍频(一般可实现小数分频倍频)、移相等调整与运算,然后经FPGA内部全局时钟布线资源(一般为全铜工艺)驱动到达芯片内所有寄存器和其它模块的时钟输入端。电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 363.3.5 一些设计的注意事项一些设计的注意事项3.3.5.6 内部逻辑产生的时钟内部逻辑产生的时钟如果需要使用内部逻辑产生时钟,必须要在组合逻辑产生的时钟后插入寄存器。电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Sprin
34、g 2010可综合VerilogHDL设计Slide 373.3.5 一些设计的注意事项一些设计的注意事项3.3.5.7 门控时钟的使用问题门控时钟的使用问题门控时钟即Gated Clock,是IC设计的一种常用减少功耗的手段。但是Gated Clock不是同步时序电路,其门控逻辑会污染Clock的质量。门控时钟改进电路:电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 383.4 存储器的建模与使用存储器的建模与使用最好把存储器建模成一个元件。通常,综合工具不能最好把存储器建模成一个元件。通常,综合工具不能有效
35、地设计出存储器。一般采用更传统的技术来建立有效地设计出存储器。一般采用更传统的技术来建立存储器。一旦建立了存储器模块,就可以在综合模型存储器。一旦建立了存储器模块,就可以在综合模型中使用模块实例化语句来实例化该模块。中使用模块实例化语句来实例化该模块。层次设计方法和图文混合设计的概念层次设计方法和图文混合设计的概念实例:查找表乘法器实例:查找表乘法器电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 393.4.1 存储器的使用步骤存储器的使用步骤电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计
36、Spring 2010可综合VerilogHDL设计Slide 403.4.1 存储器的使用步骤存储器的使用步骤电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 413.4.1 存储器的使用步骤存储器的使用步骤电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 423.4.1 存储器的使用步骤存储器的使用步骤电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slid
37、e 433.4.1 存储器的使用步骤存储器的使用步骤电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 443.4.1 存储器的使用步骤存储器的使用步骤电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 453.4.1 存储器的使用步骤存储器的使用步骤电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 463.4.2 图形输入图形输入电工电子科技创新中心电工
38、电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 473.4.3 建立存储器初始化文件建立存储器初始化文件电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 483.4.4 设定存储器初始化数据设定存储器初始化数据电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 493.4.5 仿真结果仿真结果电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2
39、010可综合VerilogHDL设计Slide 503.5 有限状态机的建模有限状态机的建模3.5.1 有限状态机的概念有限状态机的概念3.5.2 有限状态机的设计步骤有限状态机的设计步骤3.5.3 有限状态机的状态编码有限状态机的状态编码3.5.4 有限状态机的设计方法有限状态机的设计方法3.5.5 有限状态机的建模实例有限状态机的建模实例序列检测器序列检测器电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 513.5.1 有限状态机的概念有限状态机的概念电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌
40、入式系统设计Spring 2010可综合VerilogHDL设计Slide 523.5.2 有限状态机的设计步骤有限状态机的设计步骤1、逻辑抽象,得出状态转换图、逻辑抽象,得出状态转换图2、状态化简、状态化简3、状态分配、状态分配4、选定触发器类型,求出状态方程,驱动、选定触发器类型,求出状态方程,驱动方程,输出方程方程,输出方程5、按照方程得出逻辑图、按照方程得出逻辑图 用用Verilog语言描述,大部分工作都由计算语言描述,大部分工作都由计算机自动完成机自动完成电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide
41、 533.5.3 有限状态机的状态编码有限状态机的状态编码二进制编码或格雷码二进制编码或格雷码独热码独热码CPLD格雷码格雷码FPGA独热码独热码电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 543.5.4 有限状态机的设计方法有限状态机的设计方法三段式状态机的设计方法三段式状态机的设计方法状态转移块(时序)状态驱动块(组合)状态输出块(组合)电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 553.5.5 序列检测器序列检测器
42、检测到序列检测到序列110,输出,输出1,否则,否则0状态转换图状态转换图: (S0:输入一个输入一个0;S1:收到一个收到一个1;S2:连连续收到两个续收到两个1;S3:连续收到连续收到110)电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 563.5.5 序列检测器序列检测器状态转移块状态转移块parameter 3:0 s0=4b0001,s1=4b0010,s2=4b0100,s3=4b1000; /独热码 reg 3:0 current_state,next_state; always (posedg
43、e clk) /状态转移块 begin if(!nclr) current_state=s0; else current_state=next_state; end电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 573.5.5 序列检测器序列检测器 状态驱动块状态驱动块always (current_state or data) / 状态驱动块 begin case(current_state) s0: next_state=(data=1)?s1:s0); s1: next_state=(data=1)?s2
44、:s0); s2: next_state=(data=1)?s2:s3); s3: next_state=(data=1)?s1:s0); default: next_state=(data=1)?s1:s0); endcase end电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 583.5.5 序列检测器序列检测器 状态输出块状态输出块always (current_state or data) / 状态输出块 begin case(current_state) s0: out=1b0; s1: out=1
45、b0; s2: out=(data=1)?1b0:1b1); s3: out=1b1; default: out=1b0; endcase end电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 593.5.5 序列检测器状态查看序列检测器状态查看电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 603.6 课堂操作课堂操作演示演示课堂操作演示。课堂操作演示。思考题思考题什么是同步逻辑、异步逻辑?什么是流水线?谈谈时钟使能的用法。如
46、何设计双向端口?使用格雷码计数器有何好处?如何使用FPGA的内部RAM块?简述有限状态机的结构。简述有限状态机的设计方法。什么是“独热码”?如何设计同步时序逻辑电路的异步清零置位功能?用VerilogHDL设计一个移位寄存器,功能同74HC595。电工电子科技创新中心电工电子科技创新中心基于FPGA的嵌入式系统设计Spring 2010可综合VerilogHDL设计Slide 61第一次实验题第一次实验题采用有限状态机(要求采用有限状态机(要求“三段式三段式”)的方法设计一个姓名拼音序列检测器,包含端)的方法设计一个姓名拼音序列检测器,包含端口:口:Clock一位输入主时钟ARst一位输入异步
47、复位,到有效SeqIn八位输入序列输入Detected一位输出序列有效各人检测自己的姓名,姓名拼音采用姓全拼、名缩写的方式,如各人检测自己的姓名,姓名拼音采用姓全拼、名缩写的方式,如“王贞炎王贞炎”缩写为缩写为“WangZY”,大小写区分。,大小写区分。在在Verilog代码和波形仿真文件中,采用代码和波形仿真文件中,采用ASCII码表示字母。码表示字母。波形仿真文件事先提供,波形仿真文件事先提供,EndTime、Grid不要改动,不要改动,Clock、Arst波形不要改动。波形不要改动。SeqIn输入已包含随机序列,大家自行在其中加入自己的姓名序列,必须包含:输入已包含随机序列,大家自行在其
48、中加入自己的姓名序列,必须包含:两个连续完整的姓名序列,如“WangZYWangZY”一个有头无尾的不完整序列,如“WangZ”一个无头有尾的不完整序列,如“ngZY”在检测到完整序列后,从在检测到完整序列后,从Detected输出一个宽度为一个时钟周期的高电平。输出一个宽度为一个时钟周期的高电平。提交提交“.v”源代码,和仿真波形文件源代码,和仿真波形文件“.vwf”,不要压缩,文件名格式示例:,不要压缩,文件名格式示例:U20080000_WangZY.v(内部主模块名与此同名)U20080000_WangZY.vwf 注意仿真选项中选中“回写仿真波形文件”的选项格式不对,零分处理!格式不对,零分处理!提交至提交至ftp:/assignment:eeicst211.69.194.16/,其中已包含,其中已包含.vwf 模板。模板。截止时间截止时间5月月1日(含)。日(含)。