Verilog设计进阶_第1页
Verilog设计进阶_第2页
Verilog设计进阶_第3页
Verilog设计进阶_第4页
Verilog设计进阶_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、第八章第八章 Verilog 设计进阶设计进阶材料与能源学院微电子工程系材料与能源学院微电子工程系第八章第八章 Verilog 设计进阶设计进阶8.1 分频器设计分频器设计8.2 Verilog 有限状态机设计有限状态机设计第八章第八章 Verilog 设计进阶设计进阶材料与能源学院微电子工程系材料与能源学院微电子工程系8.1 分频器设计分频器设计分频器是指使输出信号频率为输入信号频率整数分分频器是指使输出信号频率为输入信号频率整数分之一的电子电路。之一的电子电路。在许多电子设备中如电子钟、频率合成器等,需要在许多电子设备中如电子钟、频率合成器等,需要各种不同频率的信号协同工作,常用的方法是以

2、稳各种不同频率的信号协同工作,常用的方法是以稳定度高的晶体振荡器为主振源,通过变换得到所需定度高的晶体振荡器为主振源,通过变换得到所需要的各种频率成分,分频器是一种主要变换手段。要的各种频率成分,分频器是一种主要变换手段。偶数倍偶数倍(2N)分频分频 偶分频比较简单,假设为偶分频比较简单,假设为N分频,只需计数到分频,只需计数到N/21,然后时钟翻转、计数清零,如此循环就可,然后时钟翻转、计数清零,如此循环就可以得到以得到N(偶偶)分频分频。第八章第八章 Verilog 设计进阶设计进阶材料与能源学院微电子工程系材料与能源学院微电子工程系例例:module fp_even(clk_out,cl

3、k_in,rst);output clk_out; input clk_in,rst;reg 1:0 cnt; reg clk_out;parameter N=6;always (posedge clk_in or negedge rst)beginif(!rst) begin cnt = 0; clk_out = 0; endelse begin if(cnt=N/2-1) begin clk_out = !clk_out; cnt=0; end else cnt = cnt + 1; endend endmodule 可以通过改变参量可以通过改变参量N的值和计数变量的值和计数变量cnt的位

4、宽实现任意偶分频。的位宽实现任意偶分频。第八章第八章 Verilog 设计进阶设计进阶材料与能源学院微电子工程系材料与能源学院微电子工程系奇数倍奇数倍(2N+1)分频分频 用两个计数器,一个由输入时钟上升沿触发,一个由输用两个计数器,一个由输入时钟上升沿触发,一个由输入时钟下降沿触发,最后将两个计数器的输出相或,即可得入时钟下降沿触发,最后将两个计数器的输出相或,即可得到占空比为到占空比为50%的方波波形的方波波形。【例例】:module count_N(reset, clk, cout);input clk, reset; output wire cout;reg4:0 m, n; reg

5、cout1, cout2;parameter N=13;always (posedge clk)/时钟上升沿计数时钟上升沿计数begin if(!reset) begin cout1=0; m=0; end else begin if(m=N-1) m=0; else m=m+1; if(m(N-1)/2) cout1=1; else cout1=0; end end第八章第八章 Verilog 设计进阶设计进阶材料与能源学院微电子工程系材料与能源学院微电子工程系always (negedge clk)/时钟下降沿计数时钟下降沿计数beginif(!reset) begin cout2=0;

6、n=0; endelse begin if(n=N-1) n=0; else n=n+1; if(n(N-1)/2) cout2=1; else cout2=0; endendassign cout=cout1|cout2;/两个计数器的输出两个计数器的输出相或相或endmodule模模13奇数分频器功能仿真波形图(奇数分频器功能仿真波形图(Quartus ) 第八章第八章 Verilog 设计进阶设计进阶材料与能源学院微电子工程系材料与能源学院微电子工程系半整数半整数(N-0.5)倍分频倍分频假设有一个假设有一个5 MHz的时钟信号,但需要得到的时钟信号,但需要得到2 MHz的时钟,的时钟,

7、分频比为分频比为2.5,此时可采用半整数分频器,此时可采用半整数分频器。半整数分频器的设计思想:要实现半整数分频器的设计思想:要实现N-0.5分频,可先设计分频,可先设计一个模一个模N计数器,再设计一个脉冲扣除电路,加在模计数器,再设计一个脉冲扣除电路,加在模N计计数器之后,每来数器之后,每来N个脉冲就扣除半个脉冲,即可实现分频个脉冲就扣除半个脉冲,即可实现分频系数为系数为N-0.5的半整数分频。的半整数分频。半整数分频器原理图如一图所示,异或门和半整数分频器原理图如一图所示,异或门和2分频模块组分频模块组成脉冲扣除电路。成脉冲扣除电路。第八章第八章 Verilog 设计进阶设计进阶材料与能源

8、学院微电子工程系材料与能源学院微电子工程系【例例】:module fdiv5_5(clkin, clr, clkout);input clkin, clr; output reg clkout;reg clk1; wire clk2; integer count;xor xor1(clk2,clkin,clk1); /异或门异或门always(posedge clkout or negedge clr) /2分频器分频器begin if(!clr) begin clk1=1b0; end else clk1=clk1;endalways(posedge clk2 or negedge clr)

9、 /模模5分频器分频器begin if(!clr)begin count=0; clkout=1b0; endelse if(count=5) /要改变分频器的模,只需改变要改变分频器的模,只需改变count的值的值 begin count=0; clkout=1b1; endelse begin count=count+1; clkout=25) begin count=count-25; delete=10; end /不删除脉冲不删除脉冲else delete=1b1; end /删除脉冲删除脉冲endalways(delete)begin if(delete=1b1) clk504m=

10、1b1; else clk504m=ckk60m;end第八章第八章 Verilog 设计进阶设计进阶材料与能源学院微电子工程系材料与能源学院微电子工程系always(posedge clk504m or posedge rst)begin if(rst) clkout=0; else if(cnt=2519) begin clkout=clkout; cnt= origin; end else cnt=cnt+1; endalways(insig)begin case(insig)4b0001:origin=2519;/产生产生10kHz信号信号4b0010:origin=1259;/产生产

11、生20kHz信号信号4b0011:origin=839;/产生产生30kHz信号信号4b0100:origin=629;/产生产生40kHz信号信号4b0101:origin=503;/产生产生50kHz信号信号4b0110:origin=419;/产生产生60kHz信号信号4b0111:origin=359;/产生产生70kHz信号信号4b1000:origin=314;/产生产生80kHz信号信号4b1001:origin=279;/产生产生90kHz信号信号4b1010:origin=251;/产生产生100kHz信号信号default: origin=2519;endcase end

12、endmodule第八章第八章 Verilog 设计进阶设计进阶材料与能源学院微电子工程系材料与能源学院微电子工程系8.2 Verilog 有限状态机设计有限状态机设计分析图示电路实现什么功能分析图示电路实现什么功能 写出各写出各时钟及时钟及触发器的触发器的驱驱动动方程;方程;写出电路的输出方程;写出电路的输出方程;写出各触发器的状态方程;写出各触发器的状态方程;列出电路的状态表;列出电路的状态表;画出电路的状态图;画出电路的状态图;逻辑功能逻辑功能分析分析。( XZ )第八章第八章 Verilog 设计进阶设计进阶材料与能源学院微电子工程系材料与能源学院微电子工程系状态机状态机(State

13、Machine)是一个广义的时序电路,像是一个广义的时序电路,像移位寄存器、计数器等都算是它的特殊功能类型中移位寄存器、计数器等都算是它的特殊功能类型中的一种。的一种。根据输入、输出及状态之间的关系,状态机可分两根据输入、输出及状态之间的关系,状态机可分两类,一类是类,一类是Moore状态机,其输出值只取决于当前状态机,其输出值只取决于当前状态,与输入值无关;另一类是状态,与输入值无关;另一类是Mealy状态机,其状态机,其输出值不但和当前状态有关,还和输入值有关。输出值不但和当前状态有关,还和输入值有关。第八章第八章 Verilog 状态机设计技术状态机设计技术材料与能源学院微电子工程系材料

14、与能源学院微电子工程系摩尔型(摩尔型(Moore)状态机)状态机 米里型(米里型(Mealy)状态机)状态机 第八章第八章 Verilog 设计进阶设计进阶材料与能源学院微电子工程系材料与能源学院微电子工程系状态机的特点与优势:状态机的特点与优势:高效的过程控制模型。它的工作方式是根据控制信号按高效的过程控制模型。它的工作方式是根据控制信号按照预先设定的状态进行顺序运行的,能实现高速、高效照预先设定的状态进行顺序运行的,能实现高速、高效的过程控制。的过程控制。容易利用现成的容易利用现成的EDA工具进行优化设计。状态机构建简工具进行优化设计。状态机构建简单,设计方案相对固定,使得综合器能提供强大

15、的优化单,设计方案相对固定,使得综合器能提供强大的优化功能,如自动编码、完全状态机生成等。功能,如自动编码、完全状态机生成等。系统性能稳定。通过构建同步时序逻辑模块,能解决竞系统性能稳定。通过构建同步时序逻辑模块,能解决竞争冒险。争冒险。 高速性能。高速性能。 比相应的比相应的CPU工作速度高出工作速度高出35个数量级。个数量级。高可靠性能。由纯硬件电路构成,运行不依赖软件指令高可靠性能。由纯硬件电路构成,运行不依赖软件指令的逐条执行;有完整的容错技术;能很快从非法态跳出。的逐条执行;有完整的容错技术;能很快从非法态跳出。第八章第八章 Verilog 设计进阶设计进阶材料与能源学院微电子工程系

16、材料与能源学院微电子工程系有限状态机设计的一般步骤有限状态机设计的一般步骤逻辑抽象。得出状态转换图就是把给出的一个实际逻辑抽象。得出状态转换图就是把给出的一个实际逻辑关系表示为时序逻辑函数,可以用状态转换表逻辑关系表示为时序逻辑函数,可以用状态转换表来描述,也可以用状态转换图来描述。来描述,也可以用状态转换图来描述。状态化简。如果在状态转换图中出现这样两个状态,状态化简。如果在状态转换图中出现这样两个状态,它们在相同的输入下转换到同一状态去,并得到一它们在相同的输入下转换到同一状态去,并得到一样的输出,则称它们为等价状态。显然等价状态是样的输出,则称它们为等价状态。显然等价状态是重复的,可以合

17、并为一个。重复的,可以合并为一个。状态分配。状态分配又称状态编码。状态分配。状态分配又称状态编码。选定触发器的类型并求出状态方程、驱动方程和输选定触发器的类型并求出状态方程、驱动方程和输出方程。出方程。按照方程得出逻辑图。按照方程得出逻辑图。第八章第八章 Verilog 设计进阶设计进阶材料与能源学院微电子工程系材料与能源学院微电子工程系8.2.1 有限状态机的有限状态机的Verilog描述描述用三个过程描述:即现态用三个过程描述:即现态(CS:Current State)、次、次态态(NS:Next State)、输出逻辑、输出逻辑(OL:Out Logic)各用一各用一个个always过程

18、描述过程描述 。双过程描述双过程描述(CS+NS、OL双过程描述双过程描述):使用两个:使用两个always过程来描述有限状态机,一个过程描述现态过程来描述有限状态机,一个过程描述现态和次态时序逻辑和次态时序逻辑(CS+NS);另一个过程描述输出逻;另一个过程描述输出逻辑辑(OL)。双过程描述双过程描述(CS、NS+OL双过程描述双过程描述):一个过程用:一个过程用来描述现态来描述现态(CS);另一个过程描述次态和输出逻辑;另一个过程描述次态和输出逻辑(NS+OL)。1. 单过程描述:在单过程描述方式中,将状态机的现单过程描述:在单过程描述方式中,将状态机的现态、次态和输出态、次态和输出逻辑逻

19、辑(CS+NS+OL)放在一个放在一个always过程中进行描述过程中进行描述。第八章第八章 Verilog 状态机设计技术状态机设计技术材料与能源学院微电子工程系材料与能源学院微电子工程系用三个过程进行描述用三个过程进行描述【例例8.28.2】: :“101”序列检测器的序列检测器的Verilog描描述述(CS、NS、OL各一各一)复习数电中学的设计过程:复习数电中学的设计过程:由给定的逻辑功能确定电路应包含的状态,并画出原始状由给定的逻辑功能确定电路应包含的状态,并画出原始状态图;态图;状态化简;状态化简;状态编码及画编码形式的状态编码及画编码形式的 状状态图和状态表;态图和状态表;选择触

20、发器;选择触发器;确定各触发器的驱动方程确定各触发器的驱动方程 及及电路的输出方程;电路的输出方程;画逻辑电路图;画逻辑电路图;第八章第八章 Verilog 状态机设计技术状态机设计技术材料与能源学院微电子工程系材料与能源学院微电子工程系module fsm1_seq101(clk,clr,x,z);input clk,clr,x; output reg z; reg1:0 state,next_state;parameter S0=2b00,S1=2b01,S2=2b11,S3=2b10; /*状态编码,采用格雷(状态编码,采用格雷(Gray)编码方式)编码方式*/always (posed

21、ge clk or posedge clr) / /该过程定义当前状态该过程定义当前状态beginif(clr) state=S0; /异步复位,异步复位,s0为起始状态为起始状态else state=next_state;endalways (state or x) /该过程定义次态该过程定义次态begincase (state)S0:begin if(x) next_state=S1;else next_state=S0; endS1:beginif(x) next_state=S1;else next_state=S2; end【例例8.28.2】: :“101”序列检测器的序列检测器的

22、Verilog描描述述(CS、NS、OL各一各一)第八章第八章 Verilog 状态机设计技术状态机设计技术材料与能源学院微电子工程系材料与能源学院微电子工程系S2:beginif(x) next_state=S3;else next_state=S0; endS3:beginif(x) next_state=S1;else next_state=S2; enddefault:next_state=S0; /default语句语句endcaseendalways (state) /该过程产生输出逻辑该过程产生输出逻辑(OL)begin case(state)S3: z=1b1;default:

23、z=1b0;endcaseendendmodule第八章第八章 Verilog 状态机设计技术状态机设计技术材料与能源学院微电子工程系材料与能源学院微电子工程系module fsm2_seq101(clk,clr,x,z);input clk,clr,x; output reg z; reg1:0 state;parameter S0=2b00,S1=2b01,S2=2b11,S3=2b10; /*状态编码,采用格雷(状态编码,采用格雷(Gray)编码方式)编码方式*/always (posedge clk or posedge clr) / /该过程定义当前状态该过程定义当前状态begin

24、if(clr) state=S0; /异步复位,异步复位,s0为起始状态为起始状态 else case (state) S0:begin if(x) state=S1; else state=S0; end S1:begin if(x) state=S1; else state=S2; end S2:begin if(x) state=S3; else state=S0; end S3:begin if(x) state=S1; else state=S2; end default: state=S0; end endcase end用两个过程进行描述用两个过程进行描述【例例8.38.3】:

25、:“101”序列检测器的序列检测器的Verilog描描述述(CS+NS、OL)第八章第八章 Verilog 状态机设计技术状态机设计技术材料与能源学院微电子工程系材料与能源学院微电子工程系always (state) /该过程产生输出逻辑该过程产生输出逻辑(OL)begin case(state)S3: z=1b1;default:z=1b0;endcaseendendmodule第八章第八章 Verilog 状态机设计技术状态机设计技术材料与能源学院微电子工程系材料与能源学院微电子工程系module fsm3_seq101(clk,clr,x,z);input clk,clr,x; outp

26、ut reg z; reg1:0 state,next_state;parameter S0=2b00,S1=2b01,S2=2b11,S3=2b10; /*状态编码,采用格雷(状态编码,采用格雷(Gray)编码方式)编码方式*/always (posedge clk or posedge clr) / /该过程定义当前状态该过程定义当前状态beginif(clr) state=S0; /异步复位,异步复位,s0为起始状态为起始状态else state=next_state;end【例例8.4】:“101”序列检测器的序列检测器的Verilog描述描述(CS、NS+OL)第八章第八章 Veri

27、log 状态机设计技术状态机设计技术材料与能源学院微电子工程系材料与能源学院微电子工程系always (state or x) /该过程定义次态该过程定义次态begincase (state)S0:begin if(x) begin next_state=S1; z=10; end else begin next_state=S0; z=10; end endS1:begin if(x) begin next_state=S1; z=10; end else begin next_state=S2; z=10; end endS2:begin if(x) begin next_state=S3

28、; z=10; end else begin next_state=S0; z=10; end endS3:begin if(x) begin next_state=S1; z=10; end else begin next_state=S2; z=10; end enddefault: begin next_state=S0; z=10; end endcaseendendmodule第八章第八章 Verilog 状态机设计技术状态机设计技术材料与能源学院微电子工程系材料与能源学院微电子工程系用单个过程进行描述用单个过程进行描述【例例8.5】:“101”序列检测器的序列检测器的Verilog

29、描述描述(CS+NS+OL)module fsm4_seq101(clk,clr,x,z);input clk,clr,x; output reg z; reg1:0 state;parameter S0=2b00,S1=2b01,S2=2b11,S3=2b10; /*状态编码,采用格雷状态编码,采用格雷(Gray)编码方式编码方式*/always (posedge clk or posedge clr)Begin if(clr) state=S0; /异步复位,异步复位,s0为起始状态为起始状态else case(state) S0:begin if(x) begin state=S1; z

30、=1b0; end else begin state=S0; z=1b0; end end S1:begin if(x) begin state=S1; z=1b0; end else begin state=S2; z=1b0; end end S2:begin if(x) begin state=S3; z=1b0; end else begin state=S0; z=1b0; end end S3:begin if(x) begin state=S1; z=1b1; end else begin state=S2; z=1b1; end end default:begin state=

31、S0; z=1b0;end /*default语句语句*/ endcaseend endmodule第八章第八章 Verilog 状态机设计技术状态机设计技术材料与能源学院微电子工程系材料与能源学院微电子工程系8.2.2 状态编码状态编码顺序编码顺序编码 :使用的触发器数量最少:使用的触发器数量最少(N个触发器个触发器有有2N状态状态),剩余的非法状态也最少,容错技术,剩余的非法状态也最少,容错技术最为简单。但耗的组合逻辑资源较多,转换时间最为简单。但耗的组合逻辑资源较多,转换时间较长,易出现毛刺。较长,易出现毛刺。格雷编码:每个相邻的状态切换只有一个格雷编码:每个相邻的状态切换只有一个bit

32、的的信号跳变,降低产生毛刺和暂态的可能性。信号跳变,降低产生毛刺和暂态的可能性。约翰逊编码:相邻的状态切换只有一个约翰逊编码:相邻的状态切换只有一个bit的信的信号跳变,但号跳变,但N个触发器只有个触发器只有2N状态。状态。1.独热码:相邻的状态切换只有一个独热码:相邻的状态切换只有一个bit的信号跳的信号跳变,转换速度快,工作稳定性好,可节省和简化变,转换速度快,工作稳定性好,可节省和简化译码电路,但译码电路,但N个触发器只有个触发器只有N状态。状态。第八章第八章 Verilog 状态机设计技术状态机设计技术材料与能源学院微电子工程系材料与能源学院微电子工程系第八章第八章 Verilog 状

33、态机设计技术状态机设计技术材料与能源学院微电子工程系材料与能源学院微电子工程系对于对于FPGA器件,常用器件,常用独热码编码。独热码编码。在在Quartus 中设置:中设置:Assignments/Settings/ Analysis & Synthesis Settings/More Settings/Existing option Settings/State Machine Precessing/Setting第八章第八章 Verilog 状态机设计技术状态机设计技术材料与能源学院微电子工程系材料与能源学院微电子工程系8.2.3 状态编码状态编码 在在Verilog语言中,有两种

34、方式可用于定义状态语言中,有两种方式可用于定义状态编码,分别用编码,分别用parameter和和define语句实现,比如要语句实现,比如要为为state0、state1、state2、state3四个状态定义码字四个状态定义码字为:为:00、01、11、10,可采用下面两种方式。,可采用下面两种方式。方式方式1:用:用parameter参数定义参数定义 parameter tate1=2b00, state2=2b01, state3=2b11, state4=2b10; case(state) state1:; /调用调用 state2:; 第八章第八章 Verilog 状态机设计技术状态机设计技术材料与能源学院微电子工程系材料与能源学院微电子工程系方式方式2:用:用define语句定义语句定义define state1 2b00 /不要加分号不要加分号“;”defi

温馨提示

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

评论

0/150

提交评论