Verilog 设计进阶

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
材料与能源学院Байду номын сангаас电子工程系
可以通过改变参量 N 的值和计数变量 cnt 的位宽实现任意偶分频。
第八章 Verilog 设计进阶
2. 奇数倍(2N+1)分频
用两个计数器,一个由输入时钟上升沿触发,一个由输 入时钟下降沿触发,最后将两个计数器的输出相或,即可得 到占空比为50%的方波波形。 【例】: module count_N(reset, clk, cout); input clk, reset; output wire cout; reg[4:0] m, n; reg 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
材料与能源学院微电子工程系
2.
3. 4. 5.
第八章 Verilog 设计进阶
有限状态机设计的一般步骤
1. 逻辑抽象。得出状态转换图就是把给出的一个实际
逻辑关系表示为时序逻辑函数,可以用状态转换表 来描述,也可以用状态转换图来描述。 状态化简。如果在状态转换图中出现这样两个状态, 它们在相同的输入下转换到同一状态去,并得到一 样的输出,则称它们为等价状态。显然等价状态是 重复的,可以合并为一个。 状态分配。状态分配又称状态编码。 选定触发器的类型并求出状态方程、驱动方程和输 出方程。 按照方程得出逻辑图。

材料与能源学院微电子工程系
第八章 Verilog 设计进阶
module clk_divider (rst, insig, clk60m, clk504m, clkout); input rst, clk60m; //clk60m 为时钟源 output clkout, clk504m; //cnt1计分频的次数 reg clk1,clkout,delete,clk504m; input[3:0] insig; reg[11:0] cnt, origin; integer count; always@(posedge clk60m or posedge rst) begin if(rst) begin count=0; delete=1'b0; end else begin count=count+21; if(count>=25) begin count=count-25; delete=1'0; end //不删除脉冲 else delete=1'b1; end //删除脉冲 end always@(delete) begin if(delete==1'b1) clk504m=1'b1; else clk504m=ckk60m; end
双模分频器
delete
f1
控制计数器
控制逻辑
材料与能源学院微电子工程系
第八章 Verilog 设计进阶
下面假定源时钟为60MHz,先从60MHz经小数分频得到
50.4MHz的时钟信号,再从50.4MHz时钟分频得到10KHz、 20KHz、…、100KH等10个时钟频率。 因此,取P =25,Q =21。 工作过程:输入的时钟源clk的每一个上升沿,计数器加上 21,若计数器的值小于25,则发出删除脉冲的信号,将 delete置为高电平;若其值大于25,则将计数器的值减去25, 并将delete置为低电平,不发出删除脉冲的信号。
第八章 Verilog 设计进阶
第八章 Verilog 设计进阶
§8.1 分频器设计 §8.2 Verilog 有限状态机设计
材料与能源学院微电子工程系
第八章 Verilog 设计进阶
§8.1 分频器设计 分频器是指使输出信号频率为输入信号频率整数分 之一的电子电路。 在许多电子设备中如电子钟、频率合成器等,需要 各种不同频率的信号协同工作,常用的方法是以稳 定度高的晶体振荡器为主振源,通过变换得到所需 要的各种频率成分,分频器是一种主要变换手段。 1. 偶数倍(2N)分频 偶分频比较简单,假设为N分频,只需计数到 N/2-1,然后时钟翻转、计数清零,如此循环就可 以得到N(偶)分频。
材料与能源学院微电子工程系
第八章 Verilog 设计进阶
例:module fp_even(clk_out,clk_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) begin if(!rst) begin cnt <= 0; clk_out <= 0; end else begin if(cnt==N/2-1) begin clk_out <= !clk_out; cnt<=0; end else cnt <= cnt + 1; end end endmodule
材料与能源学院微电子工程系
2.
3. 4.
5.
第八章 Verilog 设计进阶
§8.2.1 有限状态机的Verilog描述
1. 用三个过程描述:即现态(CS:Current State)、次 态(NS:Next State)、输出逻辑(OL:Out Logic)各用一 个always过程描述 。 2. 双过程描述(CS+NS、OL双过程描述):使用两个 always过程来描述有限状态机,一个过程描述现态 和次态时序逻辑(CS+NS);另一个过程描述输出逻 辑(OL)。 3. 双过程描述(CS、NS+OL双过程描述):一个过程用 来描述现态(CS);另一个过程描述次态和输出逻辑 (NS+OL)。 4. 单过程描述:在单过程描述方式中,将状态机的现 态、次态和输出逻辑(CS+NS+OL)放在一个always 过程中进行描述。
材料与能源学院微电子工程系
第八章 Verilog 设计进阶
5.5倍半整数分频器功能仿真波形图(Quartus Ⅱ)
材料与能源学院微电子工程系
第八章 Verilog 设计进阶
4. 小数分频
分频比X=f0 /f1


f0
=M+N2 /(N1+N2) =[M/(N1+N2)+N2 ]/(N1+N2) =P/Q 当和取不同的正整数时,就可实现小(分)数分频。 常用设计方法—双模前置小数分频:当时钟源每输入P个 脉冲时,利用脉冲删除电路从这P个脉冲中按照一定的规 律删除(P-Q)个脉冲,输出Q个脉冲,从而实现平均意义 上的X分频。 双模前置小数分频电路结构如下 :

材料与能源学院微电子工程系
第八章 Verilog 设计进阶
【例】: 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<=1'b0; end else clk1<=~clk1; end always@(posedge clk2 or negedge clr) //模5分频器 begin if(!clr) begin count<=0; clkout<=1'b0; end else if(count==5) //要改变分频器的模,只需改变count的值 begin count<=0; clkout<=1'b1; end else begin count<=count+1; clkout<=1'b0; end end endmodule
材料与能源学院微电子工程系
第八章 Verilog 设计进阶
always @(negedge clk) //时钟下降沿计数 begin if(!reset) begin cout2<=0; n<=0; end else begin if(n==N-1) n<=0; else n<=n+1; if(n<(N-1)/2) cout2<=1; else cout2<=0; end end assign cout=cout1|cout2; //两个计数器的输出相或 endmodule
材料与能源学院微电子工程系
第八章 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; end always@(insig) begin case(insig) 4'b0001:origin<=2519; //产生10kHz信号 4'b0010:origin<=1259; //产生20kHz信号 4'b0011:origin<=839; //产生30kHz信号 4'b0100:origin<=629; //产生40kHz信号 4'b0101:origin<=503; //产生50kHz信号 4'b0110:origin<=419; //产生60kHz信号 4'b0111:origin<=359; //产生70kHz信号 4'b1000:origin<=314; //产生80kHz信号 4'b1001:origin<=279; //产生90kHz信号 4'b1010:origin<=251; //产生100kHz信号 default: origin<=2519; endcase end endmodule
模13奇数分频器功能仿真波形图(Quartus Ⅱ)
材料与能源学院微电子工程系
第八章 Verilog 设计进阶
3. 半整数(N-0.5)倍分频

假设有一个5 MHz的时钟信号,但需要得到2 MHz的时钟,
分频比为2.5,此时可采用半整数分频器。 半整数分频器的设计思想:要实现N-0.5分频,可先设计 一个模N计数器,再设计一个脉冲扣除电路,加在模N计 数器之后,每来N个脉冲就扣除半个脉冲,即可实现分频 系数为N-0.5的半整数分频。 半整数分频器原理图如一图所示,异或门和2分频模块组 成脉冲扣除电路。
材料与能源学院微电子工程系
第八章 Verilog 状态机设计技术
摩尔型(Moore)状态机
米里型(Mealy)状态机
材料与能源学院微电子工程系
第八章 Verilog 设计进阶
状态机的特点与优势:
1. 高效的过程控制模型。它的工作方式是根据控制信号按
照预先设定的状态进行顺序运行的,能实现高速、高效 的过程控制。 容易利用现成的EDA工具进行优化设计。状态机构建简 单,设计方案相对固定,使得综合器能提供强大的优化 功能,如自动编码、完全状态机生成等。 系统性能稳定。通过构建同步时序逻辑模块,能解决竞 争冒险。 高速性能。 比相应的CPU工作速度高出3~5个数量级。 高可靠性能。由纯硬件电路构成,运行不依赖软件指令 的逐条执行;有完整的容错技术;能很快从非法态跳出。
材料与能源学院微电子工程系
第八章 Verilog 设计进阶
状态机(State Machine)是一个广义的时序电路,像
移位寄存器、计数器等都算是它的特殊功能类型中 的一种。 根据输入、输出及状态之间的关系,状态机可分两 类,一类是Moore状态机,其输出值只取决于当前 状态,与输入值无关;另一类是Mealy状态机,其 输出值不但和当前状态有关,还和输入值有关。
材料与能源学院微电子工程系
第八章 Verilog 设计进阶
§8.2 Verilog 有限状态机设计 分析图示电路实现什么功能
1. 写出各时钟及触发器的驱
动方程;
2. 3. 4. 5. 6.
写出电路的输出方程; 写出各触发器的状态方程; 列出电路的状态表; 画出电路的状态图; 逻辑功能分析。
( X/Z )
相关文档
最新文档