第三讲 可综合VerilogHDL_第1页
第三讲 可综合VerilogHDL_第2页
第三讲 可综合VerilogHDL_第3页
第三讲 可综合VerilogHDL_第4页
第三讲 可综合VerilogHDL_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

1、电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 1基于基于fpgafpga的嵌入式系统设计的嵌入式系统设计电工电子工程基础电工电子工程基础王贞炎王贞炎电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 23 可综合可综合veriloghdl设计设计 3.1 fpga中逻辑中逻辑设计的设计的一些概念和原则一些概念和原则 3.2 组合逻辑的建模组合逻辑的建模 3.3 时序逻辑的建模时序逻辑的建模 3.4 存储器的建模与使用存储器的建模与

2、使用 3.5 有限状态机的建模有限状态机的建模 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、本概念一些基本概念 3.1.1.1 面积和速度面积和速度面积:是指一个设计所消耗fpga,可理解为一个设计在fpga中占用的“面积”。主要由le衡量,还包括ram和dsp块等。速度:是指一个设计在fpga芯片上能稳定运行的最高频率。“面积”和“速度”是一对对立统一的矛盾体。可以用更多的逻辑资源实现更快速的处理,也可以牺牲速度用较少的逻辑资源“面积”和“速度”互换。科学的设计目标是:在满足设计时序要求的前提下,占用最小的芯片面积;或者在所规定的面积下,使设计的时序余量更大,频率更高。电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghd

4、l设计slide 53.1.1 一些基本概念一些基本概念 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设计

6、slide 73.1.1 一些基本概念一些基本概念 3.1.1.1 合理利用资源合理利用资源在设计一个电子系统时,要了解,什么样的功能适合用le实现,什么样的功能时候由dsp、cpu实现(包括fpga内部的dsp、cpu)。实时性要求高、频率高、大量并行的功能模块适合使用传统的fpga逻辑实现。在fpga内部设计时,要对的fpga全局有宏观上的合理安排,比如时钟、模块组织结构、ram的利用、面积和速度等问题。善于利用片内ram、乘法器。电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 83.1.2 同步设计同步设

7、计 3.1.2.1 同步和异步设计同步和异步设计异步数字电路:电路的核心逻辑用组合电路实现;电路的主要信号并不依赖任何一个时钟性信号;容易产生毛刺,出现竞争冒险;不利于器件移植、不利于时序分析与验证。同步数字电路:电路核心逻辑用各种触发器实现;电路的主要信号都是由某个时钟沿驱动产生的;可以很好地避免毛刺;有利于器件移植和时序分析及验证。可编程器件成本越来越低,综合效果越来越强,现代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 同步设

10、计同步设计 3.1.2.4 统一时钟和数据使能!统一时钟和数据使能! 数据流处理模块的端口建议,使用于一切对单个数据处理需要数个、甚至不确定数目的时钟周期的情况。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 组合逻辑的建模组合逻辑的建模

15、 3.2.1 方法一方法一数据流建模数据流建模 参数化的奇偶校验器 3.2.2 方法二方法二行为建模行为建模 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;

16、output oddpar,evenpar; assign evenpar=datain; assign 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

17、or d2 or d1 or d0) begin case(d3,d2,d1,d0) 4d0: a,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,

18、g=7b1111111; 4d9: a,b,c,d,e,f,g=7b1111011; default: 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); b

19、ufif1 g2(q1,io,bi); buf g3(o,q1);endmodule电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 233.3 时序逻辑的建模时序逻辑的建模3.3.1 触发器建模触发器建模 异步清零或置位 同步清零或置位3.3.2 锁存器建模锁存器建模 异步清零或置位3.3.3 计数器建模计数器建模 二进制计数器 模n计数器 格雷码计数器3.3.4 移位寄存器建模移位寄存器建模3.3.5 一些设计的注意事项一些设计的注意事项电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计sp

20、ring 2010可综合veriloghdl设计slide 243.3.1 触发器建模触发器建模3.3.1.1 异步置位清零异步置位清零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电工电子科技创新中心电工电子科

21、技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 253.3.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的嵌入式

22、系统设计spring 2010可综合veriloghdl设计slide 263.3.2 锁存器建模锁存器建模3.3.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电工电子科技创新中心电工电子科技

23、创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 273.3.3 计数器建模计数器建模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)

24、if(presetclear) counter=0; else if(loaddata) counter=datain; 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

25、,qbar); parameter nbits=2,upto=3; input clock,clear; output 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 计数器建

26、模计数器建模3.3.3.3 格雷码计数器格雷码计数器转换规则:格雷码最高位与二进制码最高位相同;格雷码的次高位是其二进制码的最高位和次高位异或的结果;依次类推,直到最低位。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; alway

27、s(counter) begin graycount1=counter1; for(k=2;k=nbits;k=k+1) graycountk=counterk-1counterk; end assign q=graycount; assign qn=graycount;endmodule序号二进制右移一位格雷码00000000001001000001201000101130110010104100010110510101011161100111017111011100电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计sli

28、de 303.3.4 移位寄存器建模移位寄存器建模3.3.3.4 3位通用移位寄存器的综合模型位通用移位寄存器的综合模型具备功能:保持、左移、右移、载入。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,s

29、1) 2b00: ; 2b01: q=q1:0,rightin; 2b10: q=leftin,q2:1; 2b11: q=parin; endcaseendmodule电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 313.3.5 一些设计的注意事项一些设计的注意事项 3.3.5.1 避免组合逻辑反馈环路避免组合逻辑反馈环路 组合逻辑反馈环路( combinational loops)是 pld设计的大忌!它最容易因振荡、毛刺、时序违规等引起整个系统的不稳定和不可靠。 处理方法: 牢记任何反馈环路必须包含寄存

30、器。 检查综合、实现报告的warning信息,发现combinational loops后进行相应修改。电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 323.3.5 一些设计的注意事项一些设计的注意事项 3.3.5.2 替换延迟链替换延迟链 延迟链是异步时序设计的常用手段,特别是在早期pld设计和当代asic设计中,经常使用delay chains实现两个结点间的延迟调整。当代pld设计推荐使用同步实现设计方法,一般要避免使用异步的delay chains。 在同步时序设计中,取代异步delay chains

31、的最常用方法是用分频或倍频的时钟或者同步计数器完成所需延迟。电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 333.3.5 一些设计的注意事项一些设计的注意事项 3.3.5.3 替换异步脉冲产生单元替换异步脉冲产生单元: 在异步设计中,常用delay chains完成脉冲产生: 常用的同步脉冲产生方法:电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 343.3.5 一些设计的注意事项一些设计的注意事项 3.3.5.4 慎用锁存器

32、慎用锁存器 同步逻辑设计要避免使用latch。 综合出与设计意图不吻合的latch结构的主要原因有: 在设计组合逻辑时,使用不完全的条件判断语句,如if没有else,或不完整的case语句; 设计中存在组合逻辑的反馈环路。 防止产生非目的性latch的方法: 使用完备的ifelse语句; 检查设计中是否含有组合逻辑反馈环路; 为每个输入条件设计输出操作,对case语句设置默认操作; 使用case语句时,特别是在设计状态机时,尽量附加综合约束属性,综合为完全条件case语句(full case)。电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合ve

33、riloghdl设计slide 353.3.5 一些设计的注意事项一些设计的注意事项 3.3.5.5 同步时序电路推荐的时钟设计方法同步时序电路推荐的时钟设计方法 时钟经全局时钟输入引脚输入,通过fpga内部专用pll进行分频/倍频(一般可实现小数分频倍频)、移相等调整与运算,然后经fpga内部全局时钟布线资源(一般为全铜工艺)驱动到达芯片内所有寄存器和其它模块的时钟输入端。电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 363.3.5 一些设计的注意事项一些设计的注意事项 3.3.5.6 内部逻辑产生的时钟内

34、部逻辑产生的时钟 如果需要使用内部逻辑产生时钟,必须要在组合逻辑产生的时钟后插入寄存器。电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 373.3.5 一些设计的注意事项一些设计的注意事项 3.3.5.7 门控时钟的使用问题门控时钟的使用问题 门控时钟即gated clock,是ic设计的一种常用减少功耗的手段。但是gated clock不是同步时序电路,其门控逻辑会污染clock的质量。 门控时钟改进电路:电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veri

35、loghdl设计slide 383.4 存储器的建模与使用存储器的建模与使用 最好把存储器建模成一个元件。通常,综合工具不能最好把存储器建模成一个元件。通常,综合工具不能有效地设计出存储器。一般采用更传统的技术来建立有效地设计出存储器。一般采用更传统的技术来建立存储器。一旦建立了存储器模块,就可以在综合模型存储器。一旦建立了存储器模块,就可以在综合模型中使用模块实例化语句来实例化该模块。中使用模块实例化语句来实例化该模块。 层次设计方法和图文混合设计的概念层次设计方法和图文混合设计的概念 实例:查找表乘法器实例:查找表乘法器电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计s

36、pring 2010可综合veriloghdl设计slide 393.4.1 存储器的使用步骤存储器的使用步骤电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 403.4.1 存储器的使用步骤存储器的使用步骤电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 413.4.1 存储器的使用步骤存储器的使用步骤电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide

37、 423.4.1 存储器的使用步骤存储器的使用步骤电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 433.4.1 存储器的使用步骤存储器的使用步骤电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 443.4.1 存储器的使用步骤存储器的使用步骤电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 453.4.1 存储器的使用步骤存储器的使用步骤电工电子科

38、技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 463.4.2 图形输入图形输入电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 473.4.3 建立存储器初始化文件建立存储器初始化文件电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 483.4.4 设定存储器初始化数据设定存储器初始化数据电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计s

39、pring 2010可综合veriloghdl设计slide 493.4.5 仿真结果仿真结果电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 503.5 有限状态机的建模有限状态机的建模 3.5.1 有限状态机的概念有限状态机的概念 3.5.2 有限状态机的设计步骤有限状态机的设计步骤 3.5.3 有限状态机的状态编码有限状态机的状态编码 3.5.4 有限状态机的设计方法有限状态机的设计方法 3.5.5 有限状态机的建模实例有限状态机的建模实例序列检测器序列检测器电工电子科技创新中心电工电子科技创新中心基于fp

40、ga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 513.5.1 有限状态机的概念有限状态机的概念电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 523.5.2 有限状态机的设计步骤有限状态机的设计步骤 1、逻辑抽象,得出状态转换图、逻辑抽象,得出状态转换图 2、状态化简、状态化简 3、状态分配、状态分配 4、选定触发器类型,求出状态方程,驱动、选定触发器类型,求出状态方程,驱动方程,输出方程方程,输出方程 5、按照方程得出逻辑图、按照方程得出逻辑图 用用verilog语言描述

41、,大部分工作都由计算语言描述,大部分工作都由计算机自动完成机自动完成电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 533.5.3 有限状态机的状态编码有限状态机的状态编码 二进制编码或格雷码二进制编码或格雷码 独热码独热码 cpld格雷码格雷码 fpga独热码独热码电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 543.5.4 有限状态机的设计方法有限状态机的设计方法 三段式状态机的设计方法三段式状态机的设计方法状态转移块(时

42、序)状态驱动块(组合)状态输出块(组合)电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 553.5.5 序列检测器序列检测器 检测到序列检测到序列110,输出,输出1,否则,否则0 状态转换图状态转换图: (s0:输入一个输入一个0;s1:收到一个收到一个1;s2:连连续收到两个续收到两个1;s3:连续收到连续收到110)电工电子科技创新中心电工电子科技创新中心基于fpga的嵌入式系统设计spring 2010可综合veriloghdl设计slide 563.5.5 序列检测器序列检测器 状态转移块状态转移块

43、parameter 3:0 s0=4b0001,s1=4b0010,s2=4b0100,s3=4b1000; /独热码 reg 3:0 current_state,next_state; always (posedge 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: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的

温馨提示

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

评论

0/150

提交评论