用VerilogHDL实现基于FPGA的通用分频器的设计.kdh
- 格式:pdf
- 大小:75.58 KB
- 文档页数:2
基于FPGA的通用分频器设计周子昂,王福源,魏军辉(郑州大学信息工程学院,河南郑州450052)摘要:本文介绍了一种能够完成半整数和各种占空比的奇/偶数和的通用的分频器设计,并给出了本设计在Altera公司的FLEX10K系列EPF10K10LC84-3型FPGA芯片中实现后的测试数据和设计硬件的测试结果,结果表明了设计的正确性和可行性。
由于设计采用VHDL硬件描述语言实现,用户可以自行裁减和设置分频器的功能,所以有很广泛的应用价值。
关键词: 通用分频器; 占空比; 半整数;中图分类号:TN772 文献标识码:ADesign of universal frequency divider based on FPGAZHOU zi ang, WANG fu yuan,WEI jun hui(College of information, Zhengzhou University, Zhengzhou, Henan, 450052)Abstract: This paper presents an algorithm for designing a universal frequency divider which can realize different duty cycle either odd and even divider number. Experiments and hardware test onAltera PF10K10LC84-3 chip of FLEX10K series are given to show that the design is successful. Depending on the VHDL realization of this algorithm the design is of design flexibility and widely applications.Keywords: universal frequency divide; half duty cycle; half integer;1.概述分频器是数字系统设计的基本电路。
基于FPGA分频器设计分频器大家用的都很多,相对而言,奇数分频比偶数分频要简单点。
下面我简单介绍下使用Verilog HDL语言设计分频计数器的方法。
偶数倍分频:如进行N倍整数分频,那么可以由待分频的时钟触发器计数器计数,当计数器从0计数到N/2-1时,输出时钟进行翻转,并给计数器一个复位信号,使得下一个时钟从零开始计数,以此循环下去。
这种方法可以实现任意的偶数分频,且占空比为50%。
奇数倍分频:归类为一般的方法,对于实现占空比为50%的N倍奇数分频,首先进行上升沿触发进行模N计数,计数从0开始,到(N-1)/2进行输出时钟的翻转,然后经过(N+1)/2再次进行翻转得到一个占空比非50%的奇数n分频时钟。
再者同时进行下降沿触发的模N计数,到和上升沿过(N-1)/2时,输出时钟再次翻转生成非50%的奇数n倍分频时钟,两个占空比非50%的N分频时钟相或运算,得到占空比为50%的奇数N倍分频时钟。
我以5分频计数为例子:module div5_clk(clk, rst, clk_5);input clk,rst;output clk_5;wire clk_5;reg clk_5o;reg clk_5j;reg[2:0] count0;reg[2:0] count1;always@(posedge clk or negedge rst)beginif(!rst)begincount0 <= 3'b000;clk_5o <= 0;endelse if(count0 == 3'd4)begincount0 <= 3'b000;clk_5o <= 0;endelse if(count0 >= 2)beginclk_5o <= 0;count0 <= count0 + 1;endelsebeginclk_5o <= 1;count0 <= count0 + 1;endendalways@(negedge clk or negedge rst) beginif(!rst)begincount1 <= 3'b000;clk_5j <= 0;endelse if(count1 == 3'd4)begincount1 <= 3'b000;clk_5j <= 0;endelse if(count1 >= 2)beginclk_5j <= 0;count1 <= count1 + 1;endelsebeginclk_5j <= 1;count1 <= count1 + 1;endendassign clk_5 = clk_5o | clk_5j; endmodule其他的以此类推。
Verilog分频器的设计原理一、概述Verilog分频器是数字电路设计中常用的一个模块,它可以将输入的时钟信号分频成较低频率的信号。
在数字系统中,分频器的应用非常广泛,可以用于时钟频率控制、时序信号生成等领域。
本文将介绍Verilog分频器的设计原理,帮助读者了解其工作原理和实现方法。
二、分频器的基本结构1. 分频器的概念分频器是一种能够将输入时钟信号分频成较低频率的信号的电路。
在数字系统中,分频器通常用于降低时钟频率,以满足某些特定的时序要求。
其基本原理是通过对输入时钟信号进行计数和判断,当计数值达到一定阈值时输出一个时钟脉冲,从而实现对输入信号的分频操作。
2. 分频器的基本结构一个简单的分频器通常由计数器和触发逻辑两部分组成。
计数器用于对输入信号进行计数,触发逻辑用于判断计数值是否达到分频的要求,并生成相应的时钟脉冲输出。
根据计数器的位宽和触发逻辑的设计,可以实现不同的分频比。
三、Verilog分频器的设计原理1. Verilog分频器的模块化设计在Verilog中,通常将分频器设计为一个独立的模块,通过实例化和连接可以方便地集成到更大的数字系统中。
分频器的模块化设计可以使其具有良好的可重用性和扩展性,提高数字系统的整体设计效率。
2. Verilog分频器的时序要求在Verilog中设计分频器时,需要考虑到时钟信号的时序要求。
由于分频器通常用于时序控制,因此需要保证分频的输出信号能够与系统中其他模块的时钟信号同步,避免出现不稳定和不可预测的情况。
3. Verilog分频器的实现方法在Verilog中,可以使用寄存器、计数器和逻辑门等原语来实现分频器的功能。
通过合理的组合和连接这些原语,可以实现不同的分频比和时钟脉冲输出。
Verilog语言本身对于多种数字逻辑的建模和描述具有很好的支持,可以方便地实现各种分频器的设计。
四、Verilog分频器的设计实例1. 2分频器的设计以2分频器为例,其实现原理比较简单。
Verilog常用分频器的实现在Verilog中,实现常用分频器可以通过多种方法,包括基于计数器、移位寄存器和频率除法器等技术。
下面将介绍三种常用的Verilog分频器实现方法。
1.计数器分频器:计数器分频器是一种基于计数器的分频器实现方法。
该方法通常通过计数器对输入脉冲进行计数,并根据计数值的变化来控制输出信号的频率。
```module CounterDividerinput wire clk,input wire reset,output wire outreg [31:0] count;if (reset) begincount <= 0;end else begincount <= count + 1;endendassign out = count[31];endmodule```在这个示例中,计数器模块接收一个时钟信号和复位信号,并在时钟上升沿时对计数器进行计数。
输出信号是计数器的最高位,用于将输入信号除以计数器的最大值。
2.移位寄存器分频器:移位寄存器分频器是一种基于移位寄存器的分频器实现方法。
该方法通过对输入信号进行连续的移位操作来实现分频。
```module ShiftDividerinput wire clk,input wire reset,input wire enable,output wire outreg [31:0] shift_register;reg [3:0] count;if (reset) beginshift_register <= 0;count <= 0;end else beginif (enable) beginshift_register <= {shift_register[30:0], shift_register[31]};count <= count + 1;endendendassign out = shift_register[0];endmodule```在这个示例中,移位寄存器分频器模块接收一个时钟信号、复位信号和使能信号,并在使能信号有效时对输入信号进行连续的位移操作。
基于FPGA的分频器的设计与实现摘要:在数字逻辑电路设计中,分频器通常用来对某个给定频率进行分频,以得到所需的频率。
整数分频器的实现采用标准的计数器,也可采用可编程逻辑器件实现。
有时,时钟源与所需的频率不成整数倍关系可采用小数分频器进行分频。
本文在模拟设计频率计脉冲信号时,使用半整数分频器设计电路,且利用VHDL硬件描述语言和原理图输入方式,通过Quartus II以及EPM240T100C5型FPGA方便地完成了半整数分频器电路的设计。
关键词:FPGA;QUARTUSⅡ;VHDL语言;分频器中图分类号:G64 文献标识码:A 文章编号:1673-9132(2016)25-0023-02DOI:10.16657/ki.issn1673-9132.2016.25.013一、分频器的基本原理(一)整数分频的基本原理整数分频包含偶数分频和奇数分频,对于偶数N分频通常使用N/2计数器实现占空比为1:1的N分频器,分频输出信号模为N\2自动取反;对于奇数分频必须分频输出信号为模N计数中的一位[1]。
整数分频器的实现,采用可编程逻辑器件设计实现,当时钟源与所需的频率不成整数倍关系,此时可采用小数分频器进行分频。
(二)小数分频的基本原理小数分频的基本原理是采用脉冲吞吐计数器和锁相环技术先设计两个不同分频比的整数分频器,然后通过控制单位时间内两种分频比出现的不同次数来获得所需要的小数分频值,分频系数为N-0.5(N为整数)时,可控制扣除脉冲的时间,以使输出成为一个稳定的脉冲频率,而不是一次N分频,一次N-1分频[2]。
二、实验目的使用Quartus II仿真软件,使用半整数分频的方式,通过VHDL语言将整个分频器各个模块的编写使用FPGA实现分频器的整个设计和实现,通过分频器的设计实现掌握基本的整数分频和小数分频的原理,加强对硬件语言的理解,以及对使用组合电路设计复杂器件的能力[3]。
三、设计过程1.运行Quartus II,新建立一个工程,器件选择EPM240T100C5新片,完成新工程的建立[4]。
用Verilog HDL实现基于FPGA的通用分频器的设计
罗浩;许艳;仲佳嘉
【期刊名称】《科技广场》
【年(卷),期】2008(000)010
【摘要】在数字逻辑电路设计中,常常遇到一些对时钏分频的需求.本文实现了一种基于FPGAFPGA的软件化的分频方法,通过对不同的Verilog HDL语言程序语句进行比较分析和仿真综合.
【总页数】2页(P215-216)
【作者】罗浩;许艳;仲佳嘉
【作者单位】江西趣工大学应用科学学院,江西赣州,341000;江西趣工大学应用科学学院,江西赣州,341000;武汉理工大学信息学院,湖北武汉430070;江西趣工大学应用科学学院,江西赣州,341000
【正文语种】中文
【中图分类】TP311
【相关文献】
1.基于Verilog HDL语言的FPGA浮点数加减法运算的实现 [J], 谢文彬
2.基于FPGA的通用数控分频器的设计与实现 [J], 张建妮;陆晓燕
3.用Verilog实现基于FPGA的通用分频器 [J], 唐晓燕; 梁光胜; 王玮
4.用Verilog实现基于FPGA的通用分频器 [J], 唐晓燕; 梁光胜; 王玮
5.基于Verilog HDL的通用UART模块设计与实现 [J], 吕阳; 刘莉娜; 郑良广; 侯晓伟
因版权原因,仅展示原文概要,查看原文内容请购买。
基于FPGA的多种形式分频器设计与实现摘要FPGA(现场可编程门阵列),它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
本文通过VHDL语言编程在FPGA上实现多种形式的分频器的设计。
包括偶数分频,奇数分频,半整数分频,占空比可调分频,小数分频,并在这基础上实现了五种分频的集成。
并举例说明了分频器的应用。
关键词:FPGA,VHDL,分频器设计;the design and implement of various formsof points on the frequency based on FPFAAbstractFPGA(Field Programmable Gata Array),it is the future development product based on programmable devices, such as PAL,GAL,CPLD and so on. It is half a custom circuit in the field of ASIC. It not only solves the shortage of custom circuit, but also overcomes the limited defect of the existing programmable device gate circuit. This article realize the design and implement of various forms of points on the frequency through VHDL language.It Includes the even points frequency, an odd points frequency, half integer points frequency, occupies emptiescompared adjustable points frequency, decimal points frequency, And achieves the integration of five points frequency on this basis.It also illustrates the application of frequency device.目录第一章绪论 (1)第一节FPGA概述 (1)第二节VHDL语言的概述 (1)第三节分频器的概述 (2)第四节本文研究内容 (2)第二章VHDL语言 (3)第一节VHDL语言结构 (3)一、实体(ENTITY) (3)二、结构体(ARCHITECTURE) (3)三、程序包、库及配置 (4)第二节VHDL的数据类型与描述语言 (4)一、VHDL语言的对象 (4)二、VHDL语言的主要描述语句 (5)第三章多种形式分频器设计 (6)第一节设计任务 (6)一、设计的任务 (6)第二节系统设计与仿真 (6)一、顶层框图设计 (6)二、顶层文件设计 (7)三、模块设计 (8)第三节分频器的应用 (34)结论 (35)谢辞 (36)参考资料 (37)第一章绪论第一节 FPGA概述FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。
0引言
在数字电路中,时钟脉冲信号是最重要的信号之一。
一个数字电路往往需要多种频率的脉冲作为驱动,通常采用一个高频晶振产生一种高频率的脉冲,再利用其它的分频方法进行分频,从而产生各种不同频率的脉冲,是一种常用的方法。
本文设计的分频器是采用Verilog HDL硬件描述语言,采用参数化的设计思想,在FPGA上实现的一种软件化的分频器,且该分频器仅占用FPGA的几个逻辑单元。
1通用分频器的设计
分频器分为偶数分频、奇数分频、半整数分频和小数分频等,本文采用参数化的设计思想设计偶数分频器。
所谓参数化就是把程序中的某些参数设计成可以改变的量,使用户可以根据需要设定参数的值,以满足不同的需求。
1.1分频原理
在设计偶数分频器时,采用通过一个由待分频时钟上升沿所触发的计数器循环计数来实现N倍(N为偶数)分频的实现方法,这种方法可以实现占空比为50%的任意偶数分频。
1.2设计方法
在FPGA上,可以采用两种不同的Verilog HDL程序语句来设计计数器。
用这两种程序语句设计的计数器功能相同,但其实现方式不同,程序结构也不一样。
所以这两种程序语句编译综合后,它们占用的逻辑单元LE数差别很大。
本文对这两种程序语句进行了分析,比较了它们所占用的逻辑单元数的差别,并对产生这种差别的原因进行了分析。
(1)方法1
module FPQ_1(CLK,OUT);
input CLK;
output OUT;
parameter bitsize=4;//计数器二进制位数
parameter L=9;//1/2倍的计数基数减1
reg[bitsize:0]count=0;
reg OUT=0;
reg counter;
always@(posedge CLK)
begin
count=(count<L)(count+1):0;//计数
counter=(count==L)1:0;
用Verilog HDL实现基于FPGA的通用分频器的设计Design of General Frequency Divider Based on FPGA Using Verilog HDL
罗浩1许艳1,2仲佳嘉3
Luo Hao Xu Yan Zhong Jiajia
(1.江西理工大学应用科学学院,江西赣州341000;2.武汉理工大学信息学院,湖北武汉430070;3.江西赣州供电公司通信
自动化分公司,江西赣州341000)
(1.College of Applied Science,Jiangxi Univ.of Science&Technology,Jiangxi Ganzhou341000;2.School of Information Engineering,Wuhan Univ.of Technology,Hubei Wuhan430070;3.Branch of Communication and Automatization,Jiangxi
Ganzhou Electric Power Corporation,Jiangxi Ganzhou341000)
摘要:在数字逻辑电路设计中,常常遇到一些对时钟分频的需求。
本文实现了一种基于FPGA的软件化的分频方法,通过对不同的Verilog HDL语言程序语句进行比较分析和仿真综合。
关键词:数字逻辑电路设计;分频器;FPGA;Verilog HDL
中图分类号:TP311文献标识码:A文章编号:1671-4792-(2008)10-0215-02
Abstract:Due to the limitation of the frequency dividers recently widely used,in this paper,a new software method of frequency dividers based on FPGA is parison and analysis are presented,and synthesis and simulation are performed by different Verilog HDL language program statement.
Keywords:Digital Logic Circuit Design;Frequency Divider;FPGA;Verilog HDL 用Verilog HDL 实现
基于FPGA
的通用分频器的设计
215
科技广场2008.10
end
always@(posedge counter)
OUT=~OUT;
Endmodule
在方法1中,计数部分采用了?:运算符,这种运算符简单明了,易于阅读。
但在程序中需使用两个always型语句,才能实现分频后的输出。
(2)方法2
module FPQ_2(CLK,OUT);
input CLK;
output OUT;
parameter bitsize=4;//计数器二进制位数
parameter L=9;//1/2倍的计数基数减1
reg[bitsize:0]counter=0;
reg OUT=0;
always@(posedge CLK)
begin
if(counter<L)
counter=counter+1;
else
begin
OUT=~OUT;
counter=0;
end
end
endmodule
方法2用if-else语句完成计数功能来实现分频。
if-e1se 条件语句一般比较长,不如?:运算符简洁。
但这段程序只使用了一个always语句,比上段程序少用了一个。
1.3综合后的电路及仿真结果
在ISE8.2i环境下,经仿真后,得到20倍分频仿真结果,如图一所示。
由图一中可以看出,这两种方法均具有良好的分频效果。
1.4结果分析
对上述两种程序在ISE8.2i环境下编译综合后,得到表一的结果。
表一综合后逻辑单元(LE)数的比较
从表一中可以看出,在实现相同倍数的分频器时,不同的程序语句占用的FPGA的逻辑单元LE数不同,方法1约是方法2的两倍。
2结束语
本文介绍了基于FPGA的通用分频器的设计方法,并用Verilog HDL语言实现。
其程序是在ISE8.2i环境下,利用Xilinx公司的XC2V40-6CS144可编程逻辑器件仿真。
参考文献
[1]徐欣,于红旗,易凡等.基于FPGA的嵌入式系统设计[M].北京:机械工业出版社,2005.
[2]张建平,杜学东.一种基于FPGA的分频方法研究[J].福建电脑,2006.
[3]何静,李清峰.基于FPGA/CPLD的占空比为1:n的n 分频器的设计[J].现代电子技术,2006.
[4]杨旭辉.基于FPGA/CPLD的多种分频器的研究[J].中国电力教育,2006
[5]吴玉昌,胡荣强,王文娟.基于CPLD/FPGA的多功能分频器的设计与实现[J].设计应用,2007.
[6]杜刚,孙超,陈安军.基于FPGA技术的16位数字分频器的设计[J].仪器仪表学报,2006.
作者简介
罗浩,男,江西理工大学信息工程学院在读研究生,江西理工大学应用科学学院助教,主要研究方向:通信与信息系统。
图一20倍分频仿真图216。