基于VHDL的分频器设计[开题报告]
VHDL数字系统课程设计报告-5分频器的设计
图2 1
电子与信息工程系 2013 年 12 月
占空比为 1:1 的奇数分频器
(2) 占空比为 X/(2N+1)或(2N+1-X)/(2N+1)分频,用模(2N+1)计数器模块可以实 现。取 0 至 2N-1 之间一数值 X(0),当计数器时钟上升沿从 0 开始计数到 X 值时输出时钟翻 转一次,在计数器继续计数达到 2N 时,输出时钟再次翻转并对计数器置一复位信号,使之 从 0 开始重新计数,即可实现。如图 4 所示,由四个计数器生成了两个占空比 2:3 的分频 器 step1、和 step2。step1 由上升沿触发器出发,step2 由下降沿触发器出发。然后经过或 门生成占空比为 1:1 的分频器。
要设计占空比为 50%的奇数(n)倍分频器,可以先分别设计从时钟上升沿、下降沿开始 的占空比为(n-1)/2n 的分频器 A,B。将 A 与 B 相或结果就是占空比为 50%的奇数倍分频器。 因为 A,B 产生的信号的高电平持续时间均比低电平持续时间少一个时钟周期,B 相对 A 来说 可以说是延时了半个时钟,那么 A 与 B 进行或运算,则结果的高电平持续时间增加了半个时 钟周期,而低电平持续时间则减少了半个时钟周期。因此占空比达到 50%。
四、系统调试与结果............................................................................................. 4 五、主要元器件与设备......................................................................................... 5 六、课程设计体会与建议..................................................................................... 5
基于VHDL的全数字分数分频器设计
若前向通道采用模Ⅳ计数器实现.则输出波形 高电平占0.5或者1个输入波形周期宽度,具体是0.5 还是1.同样由输出波形周期是否为输入波形周期 的整数倍决定。若为整数倍,则占1个输入波形周期 宽度.否则占0.5个。
图4是前向通道采用了2个D触发器级联实现4 分频的仿真结果,输出波形elk—out占空比为3:4或者 4:4.分别对应于输出周期为输入周期的3.5倍与4倍 的情况。
m=b一(Ⅱrood b),
F。,,=I…a/5]+1,
疋=[胡],
(、 37 )
/z=a rood b
其中f.]表示取整,o mod 6表示求。除以b的余数。 如要设计一个5.1分频的分频器。则昭51,6=10,所
以由式(3)可得m=9,E---6,F。=5,n=l。 2.2任意分数分频器的实现
分频器的实现主要由两个模块实现.一个模块 是可预置数的可控双模分频器.另一个模块是可预
万方数据
其慨。=志≯。^=寿。
网2 3.5分频器仿真波j髟
采用VHDL语言设计上述电路(令N=4).并进行 仿真得到波形如图2所示.图中clk in为输入波形.比
锨五和clk—in可以得出:勘的每个周期中f.kgclk.in少
一个正脉冲。但是.观察模Ⅳ计数器输出temp.就可 以发现,实际上在矗的每个周期中£是ELelkin多了一个 正脉冲j分析如下:没此时刻为图中五的第一个高电 平下降沿前一刻,^=1,然后clk in由1变为0,导致异 或门的输出£变为1,£的上升沿使模Ⅳ(模4)计数器 计数.计数器结果加1。由于计数器计到了最大值, 故clk out输出高电平1.elk out的上升沿又促使2分频 器工作,使磊由1变为0,然后兀反馈回异或门得输人 端,与ckl in通过异或门使7:变为0.反馈使得‘由0变 为1.以后经过一段时问又返回0。
VHDL非整数分频器设计实验报告
非整数分频器设计一、 输入文件输入时钟CLK: IN STD_LOGIC二、 设计思路1. 方法一:分频比交错(1) 确定K 值先根据学号S N 确定M 和N :为了保证同学们的学号都不相同,取学号的后四位,即N S =1763()mod 1920(mod 17)017mod 17S SSN N ifN then M else M N =+===由以上公式,得N=(1763 mod 19)+20=35 M=(1763 mod 17)=12 然后根据下式计算分频比K 的值:8()9N M MK N-+===8.34285714(2) 确定交错规律使在35分频的一个循环内,进行12次9分频和23次8分频,这样,输出F_OUT 平均为F_IN 的8.34285714分频。
为使分频输出信号的占空比尽可能均匀,8分频和9分频应‘交替’进(3) 设计框图:要求同步时序设计(4)代码在实体内定义两个进程(PROCESS P1和PROCESS P2),一个进程控制输出8/9分频,一个进程控制35分频周期比例输出。
控制器输出FS_CTL信号控制输出是8分频还是9分频,分频器输出C_ENB信号来控制35分频计数器计数。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DIV IS--定义实体,实体名DIVPORT(F_IN: IN STD_LOGIC;--输入时钟信号F_OUT: OUT STD_LOGIC--输出时钟信号);END DIV;ARCHITECTURE A OF DIV ISSIGNAL CN1: INTEGER RANGE 0 TO 7;--8分频计数器SIGNAL CN2: INTEGER RANGE 0 TO 8;--9分频计数器SIGNAL CN: INTEGER RANGE 0 TO 34;--整体计数器SIGNAL C_ENB: STD_LOGIC;--整体计数器时钟驱动信号SIGNAL FS_CTL: STD_LOGIC;--控制8、9分频比例信号,高电平8分频,低电平9分频BEGINP1:PROCESS(F_IN)--8、9分频计数进程BEGINIF (F_IN'EVENT AND F_IN='1') THENIF(FS_CTL='0') THEN--9分频IF CN2=8 THEN--计数CN2<=0;ELSECN2<=CN2+1;END IF;IF CN2>4 THEN--控制输出,占空比0.5F_OUT<='1';ELSEF_OUT<='0';END IF;IF CN2=8 THEN--控制整体计数器驱动信号C_ENB<='1';ELSEC_ENB<='0';END IF;ELSEIF CN1=7 THEN--8分频计数,同上CN1<=0;ELSECN1<=CN1+1;END IF;IF CN1>3 THENF_OUT<='1';ELSEF_OUT<='0';END IF;IF CN1=7 THENC_ENB<='1';ELSEC_ENB<='0';END IF;END IF;END IF;END PROCESS P1;P2:PROCESS(C_ENB)--整体计数进程BEGINIF (C_ENB'EVENT AND C_ENB='1') THEN--由驱动信号驱动IF CN=34 THEN--计数CN<=0;ELSECN<=CN+1;END IF;IF (CN=34 OR CN=2 OR CN=5 OR CN=8 OR CN=11 OR CN=14 OR CN=17 OR CN=20 OR CN=23 OR CN=26 OR CN=29 OR CN=32) THEN FS_CTL<='0';ELSEFS_CTL<='1';END IF;--8、9分频比例分配ELSE CN<=CN;END IF;END PROCESS P2;END A;2. 方法二:累加器分频(1) 设计思路假设累加器位数为8,则累加器的模值N M 为28=256。
Verilog HDL分频器设计报告
2011-2012第二学期专业选修课HDL语言应用与设计课程设计报告Veriog HDL分频器设计报告设计时间:2012.4班级:信科09-2姓名:程雷学号:08093534指导老师:王冠军一、设计目的和要求:目的:1、学会使用Quantus软件(编译、仿真等),并利用它进行设计一些简单的数字电路;2、利用实验室提供的FPGA/CPLD实验箱,结合Quantus II软件实现分频器的功能。
要求:分频器可以简单实用的设置分频系数。
二、实验器件和环境实验室提供的FPGA/CPLD实验箱,PC机和Quantus II软件。
三、设计方案和源程序代码首先分析分频器要实现的功能,然后确定他的基本结构,因为分频器的基本功能要使其分频的的功能可以控制,所以要有控制使能端口;分频器的分频系数可以自由选择,所以应有分频系数设置使能端;分频之后可以输出分频之后的频率,所以应该有输出端口。
本本设计只是任意整数分频器。
1、偶数倍分频:偶数倍分频,通过计数器计数是完全可以实现的。
如进行N 倍偶数分频,那么可以通过由待分频的时钟触发计数器计数,当计数器从0计数到N/2-1时,输出时钟进行翻转,并给计数器一个复位信号,使得下一个时钟从零开始计数。
以此循环下去。
这种方法可以实现任意的偶数分频。
原理:比如4分频,需要一个模4的计数器,占空比50%,计数为0~3循环,当计数到一半时,即计数输出cnt<2时翻转。
例题代码如下://四分频module div4(clk,rst_n,o_clk);input clk,rst_n;output o_clk;reg o_clk;reg [1:0]cnt;always @(posedge clk or negedge rst_n)beginif(!rst_n)cnt<=0;else if(cnt==3)cnt<=0;elsecnt<=cnt+1;endalways @(posedge clk or negedge rst_n)beginif(!rst_n)o_clk<=0;else if(cnt<2)o_clk<=1;elseo_clk<=0;endendmodule仿真结果:2、奇数倍分频:奇数倍分频有两种实现方法:首先,完全可以通过计数器来实现,如进行三分频,通过待分频时钟上升沿触发计数器进行模三计数,当计数器计数到邻近值进行两次翻转,比如可以在计数器计数到1时,输出时钟进行翻转,计数到2时再次进行翻转。
VHDL分频器课程设计
VHDL分频器课程设计一、课程目标知识目标:1. 学生能理解VHDL语言的基本概念,掌握VHDL语言的基本语法结构;2. 学生能掌握分频器的工作原理,了解分频器在数字系统中的应用;3. 学生能运用VHDL语言设计简单的分频器电路,并实现预期的分频功能。
技能目标:1. 学生能运用所学知识,独立完成VHDL分频器代码编写;2. 学生能通过仿真软件对所设计的分频器进行功能验证,并分析其性能;3. 学生能运用所学技能解决实际工程问题,具备一定的实践操作能力。
情感态度价值观目标:1. 学生对VHDL语言及数字系统设计产生兴趣,提高学习积极性;2. 学生通过课程学习,培养团队协作精神,提高沟通与交流能力;3. 学生在课程实践中,养成严谨、认真的学习态度,树立正确的工程观念。
课程性质:本课程为实践性较强的专业课,要求学生具备一定的数字电路基础和VHDL语言知识。
学生特点:学生处于高年级阶段,具有一定的专业基础知识和实践能力,但个体差异较大。
教学要求:结合学生特点,注重理论与实践相结合,充分调动学生的学习积极性,提高学生的实践操作能力。
在教学过程中,注重培养学生的团队协作精神和工程观念。
通过本课程的学习,使学生能够掌握VHDL分频器的设计方法,为后续相关课程的学习和实际工程应用打下坚实基础。
二、教学内容1. VHDL语言基础回顾:复习VHDL的基本语法、数据类型、信号与变量、行为描述与结构描述等基本概念,确保学生具备扎实的VHDL编程基础。
教材章节:第二章 VHDL语言基础内容列举:基本语法、数据类型、信号与变量、行为描述与结构描述2. 分频器原理及分类:介绍分频器的工作原理、分类及性能指标,使学生了解不同类型分频器的优缺点及适用场景。
教材章节:第五章 分频器设计与实现内容列举:分频器原理、分类、性能指标3. VHDL分频器设计方法:讲解基于VHDL语言的分频器设计方法,包括计数器法、移位寄存器法等,并分析各种方法的优缺点。
基于VHDL数控分频器设计
目录一、设计任务与要求 (3)二、总体框图 (3)三、选择器件 (4)四、功能 (5)1、数控分频器 (5)2、BCD译码器 (6)3、扫描器 (11)4、3-8译码器 (13)5、7段数码管显示译码器 (16)五、总体设计电路图 (19)1总体(顶层)电路原理图 (19)2仿真结果 (19)3管脚分配图 (20)4.硬件连接情况 (20)六.心得体会 (20)数控分频器设计一、设计任务与要求数控分频器的功能就是当输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,以实现所需的输出频率。
基本功能:1、实现8位分频器,依据输入的8位2进制数的不同,有不同的分频比。
如输入10010000,即对输入的时钟信号进行144分频,如输入01001000,即对输入的时钟信号进行72 分频。
2、输出的波形应为占空比位50%的方波。
3、有显示功能,显示当前的分频比,即,输入的二进制数的大小。
总体框图设计思路:数控分频器用计数值可并行预置的加法器设计完成,当在输入端给定不同输入数据时将对输入的时钟信号有不同的分频比。
把输入端输入的八位二进制数直接通过BCD译码器转换为十位BCD码表示的十进制数,通过扫描器对3个数码管进行选通扫描,最后7段数码管显示译码器对选中数码管的赋值进行译码,并驱动数码管显示该数据。
模块的功能:1、数控分频器:实现8位分频器,依据输入的8位2进制数的不同,有不同的分频比。
如输入10010000,即对输入的时钟信号进行144分频。
2、BCD译码器:把输入端的8位2进制数转换成10位BCD码表示的十进制数。
3、扫描器:when “000”=>daout<=dout(3 downto 0);when “001”=>daout<=dout(7 downto 4);when “010”=>daout<=dout(3 downto 2)<="00";daout(1 downto 0)<=dout(9 downto 8);when others=>null;4、3-8译码器:当sel=0时,q=11111110;选择个位数码管亮。
基于VHDL的分频电路
CPLD/FPGA与单片机相比,一个明显得优势就在于它的高速性。但很多外围器件的驱 动都需要低频的时钟(若时钟频率太高,则键盘扫描就会出错,七段数码管会闪烁和不稳 定就是最好的例子),所以经常需要用到分频电路。常见的分频电路为偶数倍分频和奇数 倍分频两种。下面对8分倍分频电路用VHDL做简单介绍。 方案设计 如果系统有一个200KHz的时钟,系统要求将其分为100KHz,50KHz,25KHz,并且 4 在这4个频率时钟中选择一个作为输出。下面给出两种设计方案: 1.设计一个2分频电路、一个4分频电路、一个8分频电路,直接从200KHz分频到所需要的 几个频率的时钟信号(如图1所示)。 2.只设计一个2分频电路,用3个2分频电路级联的方式,从200KHz逐级分出所需要的时钟 信号(如图2所示)。
图1
图2
下面用VHDL设计一个2分频电路: library ieee; use ieee.std_logic_1164.all; entity FreDevider is port (clock:in std_logic; clockout:out std_logic ); end; architecture behavior of FreDevider is signal clk:std_logic; begin process(clock) begin if rising_edge(clock) then clk<=not clk; end if; end process; clockout<=clk; end;
//元件端口 //元件行为描述
library ieee; use ieee.std_logic_1164.all; entity fredevider2 is port( clock:in std_logic; clockout:out std_logic ); end; architecture dcider of fredevider2 is constant N:integer:=3; signal counter:integer range 0 to N; signal clk:std_logic; begin process(clock) begin if rising_edge(clock) then if counter=N then counter<=0; clk<=not clk; else counter<=counter+1; end if; end if; end process; clockout<=clk; end;
关于VHDL的任意整数分频器的设计
关于VHDL的任意整数分频器的设计0 引言在数字逻辑电路设计中,分频器是一种基本电路,通常用来对某个给定频率的时钟进行分频,得到所需的时钟。
时序电路设计中需要各种各样的分频器来获得不同频率的时钟,其中以整数分频器最为常见。
整数分频可以简单的使用模n 计数器实现,即随驱动时钟跳变n 次后就输出一个进位脉冲,然后立即被清零或置位,再开始新一轮的循环的计数。
模 n 计数器的进位脉冲的宽度一般与驱动时钟相同,这对于边沿驱动的时序逻辑并不会带来什么问题。
但是在某些需要使用电平逻辑的设计中,我们更希望分频时钟拥有50%,或者与驱动时钟相同的占空比。
这时就需要通过另外的逻辑方法来进行分频,或者使用PLL。
在基于 CPLD(复杂可编程逻辑器件)/FPGA(现场可编程门阵列)的数字系统设计中,很容易实现由计数器或其级联构成各种形式的偶数分频及非等占空比的奇数分频,但对等占空比的奇数分频及半整数分频的实现较为困难。
本文利用 VHDL(超高速集成电路硬件描述语言),通过Quartus II 7.1 开发平台,设计了一种能够实现等占空比的整数分频器,这种设计方法原理简单,可重用性好,而且只需很少的逻辑宏单元。
1 分频原理1.1 偶数倍(2N)分频使用一个模 N 计数器模块即可实现,即利用模N 计数器从0 开始对输入时钟的上升沿计数,计数值等于N 时,输出时钟进行翻转,同时给计数器一个复位信号使之从0 开始重新计数,以此循环即可。
为偶数倍分频原理示意图。
1.2 奇数倍(2N+1)分频占空比为 X/(2N+1)或(2N+1-X)/(2N+1)分频,用模(2N+1)计数器模块可以实现。
取0 至2N 之间某一数值X(0<X<2N),当计数器时钟上升沿从0 开始计数到X 值时输出时钟翻转一次,在计数器继续计数达到2N+1 时,输出时钟再次翻转并对计数器置一复位信号,使之从0 开始重新计数,即可实现。
1.3 占空比为 50%的分频1.2 中占空比为非50%的输出时钟在输入时钟的上升沿触发翻转。
基于vhdl的占空比可调奇分频器设计
分频器在各种数字电路系统设计中均有广泛的应用,其有奇分频器和偶分频器之分,后者相较前者实现较为方便。
目前很多厂家都提供特定的电路模块对时钟进行分频、倍频以及特定相移等,利用VHDL语言和可编程逻辑芯片实现分频则具有便于修改,可靠性高,利于产品升级等优势。
本文设计一种预设参数控制的任意进制奇数分频器,既能实现占空比为50%的任意奇数分频器,又能实现占空比在1/2m到(2m-1)/2m之间调控的任意奇数m分频器。
并在CPLD芯片中实现。
在传统数字系统设计中,频率源一般只提供单一时钟脉冲,其由石英晶振等产生,多采用专用模块实现分频,但针对性强,分频系数固化,成本高;通过VHDL语言,用CPLD实现,便于修改,可靠性高,成本降低,便于产品升级换代,且通过预置参数适应电子系统对时钟频率多种类要求。
本设计使用max-plusII设计平台,利用VHDL语言完成了程序的设计,通过改变预置参数,在CPLD 上EPM7128SLC84-15芯片上实现任意奇数分频器,并能实现占空比50%,以及占空比较宽范围内调控。
1 任意进制奇数分频器原理分析1.1 设计思路要实现占空比为50%的任意奇数m分频器,由于m是奇数,m的一半不是整数,这样如果均在上升沿或均在下降沿实现高低电平转换,则高低电平持续时间会相差0.5个时钟周期。
因此,只有同时利用时钟脉冲上升沿和下降沿切换计数,方能实现占空比为50%的奇数分频。
本设计中实体端口中preset为分频预置数,在实际操作中可通过改变拨动开关状态来更改;clk是时钟信号,clkout是计数分频输出信号,如图1所示。
其设计思路是引入内部计数器counter 对时钟信号计数,同时引入temp1,temp2数据类型为std_logics的两个内部信号。
为了使输出波形占空比仍为50%。
,相对于偶数分频器而言,奇数分频器的设计要复杂一些,需要通过两个进程(process)分别检测时钟信号上升沿和下降沿,对驱动时钟的上升沿和下降沿一同计数。
实验六 基于VHDL语言的分频器设计与实现
实验六基于VHDL语言的分频器设计与实现报告一、实验目的1、进一步掌握VHDL语言的基本结构及设计的输入方法。
2、掌握VHDL基本逻辑电路的综合设计应用。
二、实验原理在数字电路系统中,分频电路应用得十分广泛。
例如,工程人员常常使用分频电路来得到数字通信中的帧头信号、选通信号以及中断信号等。
因此,分频电路在数字电路系统的设计中也应该作为重要的基本电路来掌握,从而给今后的一些设计带来方便。
三、实验内容1、设计并实现一个6分频的分频电路,要求其输出信号的占空比为50%。
请分析分频电路设计原理并编写VHDL语言程序,利用Max+PlusII开发软件对其进行编译和仿真。
6分频电路实现程序代码如下:2、在实际数字电路设计过程中,往往需要得到占空比不是1:1的分频时钟,方法是:首先描述一个计数器电路,然后根据计数器电路的并行输出信号来决定输出时钟的高低电平。
请设计、编写VHDL 语言程序实现分频后时钟信号的占空比为1:15的16分频电路,并利用Max+PlusII开发软件对其进行编译和仿真。
四、实验设计1.程序代码:图library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clk_div6 isport(clk:in std_logic;clk_out:out std_logic);end clk_div6;architecture rtl of clk_div6 issignal clk_temp:std_logic;beginprocess(clk)variable counter:integer range 0 to 15;constant md:integer:=2;beginif clk'event and clk='1'thenif counter=md thencounter:=0;clk_temp<=not clk_temp;elsecounter:=counter+1;end if;end if;end process;clk_out<=clk_temp;end rtl;2.仿真结果:五、实验结果分析本实验利用VHDL语言设计分频电路,目的在于进一步掌握VHDL语言的基本结构及设计的输入方法,掌握VHDL基本逻辑电路的综合设计应用。
(VHDL实验报告)模值12计数器、分频器的设计
电子科技大学成都学院学院指导教师模值12计数器,分频器设计二、实验目的1、了解二进制计数器的工作原理。
2、时钟在编程过程中的作用。
3、学习数控分频器的设计、分析和测试方法。
4、了解和掌握分频电路实现的方法。
5、掌握EDA技术的层次化设计方法。
三、实验原理(1)二进制计数器中应用最多、功能最全的计数器之一,含异步清零和同步使能的加法计数器的具体工作过程如下:在时钟上升沿的情况下,检测使能端是否允许计数,如果允许计数(定义使能端高电平有效)则开始计数,否则一直检测使能端信号。
在计数过程中再检测复位信号是否有效(低电平有效),当复位信号起作用时,使计数值清零,继续进行检测和计数。
其工作时序如下图所示:(2)数控分频器的功能就是当输入端给定不同的输入数据时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器来设计完成的,方法是将计数溢出位与预置数加载输入信号相接得到。
(1)“模值12计数器的设计”的实验要求完成的任务是在时钟信号的作用下,通过使能端和复位信号来完成加法计数器的计数。
实验中时钟信号使用数字时钟源模块的1HZ信号,用一位拨动开关K1表示使能端信号,用复位开关S1表示复位信号,用LED模块的LED1~LED4来表示计数的二进制结果。
实验L ED 亮表示对应的位为‘1’,LED灭表示对应的位为‘0’。
通过输入不同的值模拟计数器的工作时序,观察计数的结果。
实验箱中的拨动开关、与FPGA 的接口电路,LED 灯与FPGA 的接口电路以及拨动开关、LED 与F PGA 的管脚连接在实验一中都做了详细说明,这里不在赘述。
数字时钟信号模块的电路原理如下图所示,其时钟输出与F PGA 的管脚连接表如下图所示:信号名称对应FPGA 管脚名说明DIGITAL-CLK C13 数字时钟信号送至FPGA 的C13按键开关模块的电路原理如下图所示:按键开关的输出与F PGA 的管脚连接表如下图所示:五、实验步骤(一)模值12计数器的设计1、建立工程文件1)运行QUARTUSII 软件。
使用VHDL进行任意整数分频器设计摘要
使用VHDL进行任意整数分频器设计摘要分频器是数字电路中最常用的电路之一,在FPGA的设计中也是使用效率非常高的基本设计。
基于FPGA实现的分频电路一般有两种方法:一是使用FPGA芯片内部提供的锁相环电路,如ALTERA提供的PLL(Phase Locked Loop),Xilinx 提供的DLL(Delay Locked Loop);二是使用硬件描述语言,如VHDL、Verilog HDL 等。
使用锁相环电路有许多优点,如可以实现倍频;相位偏移;占空比可调等。
但FPGA提供的锁相环个数极为有限,不能满足使用要求。
因此使用硬件描述语言实现分频电路经常使用在数字电路设计中,消耗不多的逻辑单元就可以实现对时钟的操作,具有成本低、可编程等优点。
本文使用实例描述了FPGA/CPLD上使用VHDL进行分频器设计,将奇数分频,和偶数分频结合起来,可以实现50%占空比任意正整数的分频,并在仿真中实现了将50MHZ的信号分频。
总体方案设计:首先定义8个输入端来选择是n分频然后分别写出偶数分频和奇数分频,最后再判断输入的8位是奇数还是偶数,选择相应的分频。
偶数分频:一般来说有两种方案:一是当计数器计数到N/2-1时,将输出电平进行一次翻转,同时给计数器一个复位信号,如此循环下去;二是当计数器输出为0到N/2-1时,时钟输出为0或1,计数器输出为N/2到N-1时,时钟输出为1或0N-1时,复位计数器,如此循环下去。
需要说明的是,第一种方案仅仅能实现占空比为50%的分频器,第二种方案可以有限度的调整占空比,也可以实现非50%占空比的奇数分频。
奇数分频:实现占空比为50%的2N+1分配器,则需要对待分频时钟上升沿和下降沿分别进行N/(2N+1)分频,然后将两个分频所得的时钟信号相或,即可得到占空比为50%的2N+1分频器。
VHDL语言如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity fp isgeneric (data_width : integer := 8 );port(input : in std_logic_vector(data_width-1 downto 0);clk_in : in std_logic;clk_out : out std_logic);end entity fp;architecture div of fp issignal clk_outQ : std_logic ;signal coutQ : std_logic_vector (data_width - 1 downto 0); signal cout1,cout2 : std_logic_vector(data_width - 1 downto 0); signal clk1,clk2 : std_logic;signal a : std_logic;begin-------------------------------------------------process(clk_in)beginif clk_in'event and clk_in = '1' thenif coutQ < (conv_integer(input) - 1) thencoutQ <= coutQ + 1;else coutQ <= (others => '0');end if;end if;end process;---------------------------------------------------process(coutQ)beginif coutQ < (conv_integer(input))/2 thenclk_outQ <= '0';else clk_outQ <= '1';end if;end process;---------------------------------------------------process(clk_in)------rising edgebeginif clk_in'event and clk_in='1' thenif cout1 < (conv_integer(input)-1) thencout1 <= cout1 + 1;else cout1 <= (others => '0');end if;if cout1 < (conv_integer(input)-1)/2 thenclk1 <= '1';else clk1 <= '0';end if;end if;end process;---------------------------process(clk_in)------falling edgebeginif clk_in'event and clk_in='0' thenif cout2 < (conv_integer(input)-1) thencout2 <= cout2 + 1;else cout2 <= (others => '0');end if;if cout2 < (conv_integer(input)-1)/2 thenclk2 <= '1';else clk2 <= '0';end if;end if;end process;---------------------------process(clk_outQ,clk1,clk2)beginif ((conv_integer(input) mod 2)=0) then clk_out <= clk_outQ;elseclk_out <= clk1 or clk2;end if;end process;end architecture div;仿真结果:待分频信号采用50MHZ(周期20ns)的方波。
VHDL非整数分频器设计实验报告.docx
非整数分频器设计输入文件输入时钟 CLK: IN STD_LOGIC设计思路1. 方法一:分频比交错(1)确定K 值先根据学号N S 确定M 和 N:为了保证同学们的学号都不相同, 取学号的后四位,即NS=1763 N 二 N S mod 19 20if (N S mod 17)=0 then M =17else M 二 N S mod 17由以上公式,得 N=(1763 mod 19)+20=35M=(1763 mod 17)=12然后根据下式计算分频比K 的值:(2)确定交错规律使在35分频的一个循环内,进行12次9分频和23次8分频, 这样,输出F_OUT 平均为F 」N 的(3)设计框图:要求同步时序设计8(N -M ) 9MN------------------- =8.34285714(4)代码在实体内定义两个进程(PROCESS P和PROCESS P2 一个进程控制输出8/9分频,一个进程控制35分频周期比例输出。
控制器输出FS_CTL言号控制输出是8分频还是9分频,分频器输出C ENB 言号来控制35分频计数器计数。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DIV IS-- 定义实体,实体名DIVPORT(F_IN: IN STD_LOGIC;--输入时钟信号F_OUT: OUT STD_LOGIC-- 输出时钟信号);END DIV;ARCHITECTURE A OF DIV ISSIGNAL CN1: INTEGER RANGE 0 TO 7;--8分频计数器SIGNAL CN2: INTEGER RANGE 0 TO 8;--9分频计数器SIGNAL CN: INTEGER RANGE0 TO 34;--整体计数器SIGNAL C_ENB: STD_LOGIC;--整体计数器时钟驱动信号SIGNAL FS_CTL: STD_LOGIC;--控制8、9分频比例信号,高电平8分频,低电平9 分频BEGINP1:PROCESS(F_IN)--8 、9 分频计数进程BEGINIF (F_IN'EVENT ANDF_IN='1') THENIF(FS_CTL='0') THEN--9 分频IF CN2=8 THEN-- 计数CN2<=0;ELSECN2<=CN2+1;END IF;IF CN2>4 THEN-- 控制输出,占空比0.5F_OUT<='1';ELSEF_OUT<='0';END IF;IF CN2=8THEN--控制整体计数器驱动信号C ENB<='1';ELSEC_ENB<='0';END IF;ELSEIF CN1=7THEN--8 分频计数,同上CN1<=0;ELSECN1<=CN1+1;END IF;IF CN1>3 THENF_OUT<='1';ELSEF_OUT<='0';END IF;IF CN1=7 THENC_ENB<='1';ELSEC_ENB<='0';END IF;END IF;END IF;END PROCESS P1;P2:PROCESS(C_ENB)--整体计数进程BEGINIF (C_ENB'EVENTANDC_ENB='1') THEN--由驱动信号驱动IF CN=34 THEN-- 计数CN<=0;ELSECN<=CN+1;END IF;IF (CN=34 ORCN=2ORCN=5ORCN=8ORCN=11 ORCN=14ORCN=17ORCN=20 ORCN=23ORCN=26ORCN=29ORCN=32) THENFS_CTL<='0';ELSEFS_CTL<='1';END IF;--8 、9分频比例分配ELSE CN<=CN;END IF;2. 方法二:累加器分频(1)设计思路假设累加器位数为8,则累加器的模值M为28= 256。
分频器设计 VHDL
实验报告课程名称电子设计自动化实验(基于FPGA)实验项目分频器设计(计数器设计)实验仪器计算机+ Quartus Ⅱ9.1系别信息与通信工程学院专业通信工程班级/学号学生姓名实验日期2012、5成绩_______________________ 指导教师_______________________分频器设计(计数器设计)利用VHDL语言,设计一个输入1MHz脉冲,分频后能产生100kHz、10kHz、1kHz、100Hz、10Hz、1Hz时钟脉冲产生电路。
(1)实验要求①利用VHDL语言编程;②利用仿真软件进行功能仿真;③编程下载到EP1C6Q240C8器件中,利用EDA/SOPC实验装置进行验证。
(2)实验设计注意事项实验要求每相差十倍频率都有脉冲输出,故采用十进制计数器对信号分频设计方法较为简单。
将十进制计数器做成COMPONENT,利用元件例化语句实现调用。
电路采用异步工作方式。
(3)VHDL代码LIBRARY IEEE;USE IEEE.std_logic_1164.all;USE IEEE.std_logic_arith.all;USE IEEE.std_logic_unsigned.all;ENTITY fenpin10 ISPORT(i:in std_logic;o:inout std_logic);END ENTITY;ARCHITECTURE func OF fenpin10 ISSIGNAL count:std_logic_vector(3 downto 0);SIGNAL tmp:std_logic;BEGINPROCESS(i)BEGINIF(i'EVENT AND i = '1') THENIF(count = "1001") THEN --当计数满9时进位count <= (OTHERS => '0');tmp <= NOT tmp;ELSEcount <= count + 1;END IF;END IF;END PROCESS;o <= tmp;END ARCHITECTURE;LIBRARY IEEE;USE IEEE.std_logic_1164.all;USE IEEE.std_logic_arith.all;USE IEEE.std_logic_unsigned.all;ENTITY fenpin ISPORT(clk:in std_logic;div_10:buffer std_logic;div_100:buffer std_logic;div_1000:buffer std_logic;div_10000:buffer std_logic;div_100000:buffer std_logic;div_1000000:buffer std_logic);END ENTITY;ARCHITECTURE func OF fenpin ISCOMPONENT fenpin10 --元件例化PORT(i:in std_logic;o:inout std_logic);END COMPONENT;SIGNAL x0,x1,x2,x3,x4,x5:std_logic;BEGINu1:fenpin10 PORT MAP(i => clk, o => x0);u2:fenpin10 PORT MAP(x0, x1);u3:fenpin10 PORT MAP(x1, x2);u4:fenpin10 PORT MAP(x2, x3);u5:fenpin10 PORT MAP(x3, x4);u6:fenpin10 PORT MAP(x4, x5);div_10 <= x0;div_100 <= x1;div_1000 <= x2;div_10000 <= x3;div_100000 <= x4;div_1000000 <= x5;END ARCHITECTURE;(4)仿真结果未下载验证、调试,如发现错误,见谅!——Higashi Q83831295。
使用VHDL进行分频器设计
使用VHDL 进行分频器设计作者:ChongyangLee摘要使用VHDL 进行分频器设计作者:ChongyangLee本文使用实例描述了在FPGA/CPLD 上使用VHDL 进行分频器设计,包括偶数分频、非50%占空比和50%占空比的奇数分频、半整数(N+0.5)分频、小数分频、分数分频以及积分分频。
所有实现均可通过Synplify Pro 或FPGA 生产厂商的综合器进行综合,形成可使用的电路,并在ModelSim 上进行验证。
目录概述 (1)计数器 (1)普通计数器 (1)约翰逊计数器 (3)分频器 (4)偶数分频器 (4)奇数分频器 (6)半整数分频器 (9)小数分频器 (11)分数分频器 (15)积分分频器 (18)概述分频器是数字电路中最常用的电路之一,在FPGA 的设计中也是使用效率非常高的基本设计。
基于FPGA 实现的分频电路一般有两种方法:一是使用FPGA 芯片内部提供的锁相环电路,如ALTERA 提供的PLL (Phase Locked Loop),Xilinx 提供的DLL(Delay Locked Loop);二是使用硬件描述语言,如VHDL、Verilog HDL 等。
使用锁相环电路有许多优点,如可以实现倍频;相位偏移;占空比可调等。
但FPGA 提供的锁相环个数极为有限,不能满足使用要求。
因此使用硬件描述语言实现分频电路经常使用在数字电路设计中,消耗不多的逻辑单元就可以实现对时钟的操作,具有成本低、可编程等优点。
计数器计数器是实现分频电路的基础,计数器有普通计数器和约翰逊计数器两种。
这两种计数器均可应用在分频电路中。
普通计数器最普通的计数器是加法(或减法)计数器。
下面是加法计数器的VHDL实现,其Synplify Pro下的RTL View如图1所示。
--file Name: ripple.vhd--Description: 带复位功能的加法计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity ripple isgeneric (width: integer := 4);port(clk, rst: in std_logic;cnt: out std_logic_vector(width - 1 downto 0));end ripple;architecture a of ripple issignal cntQ: std_logic_vector(width - 1 downto 0);beginprocess(clk, rst)beginif (rst = '1') thencntQ <= (others => '0');elsif (clk'event and clk = '1') thencntQ <= cntQ + 1;end if ; end process ;cnt <= cntQ;end a;代码 1 加法计数器 VHDL 代码图 1 加法计数器 RTL 视图加法计数器的Test Bench 代码如下所示,在ModelSim 下进行功能仿真,仿真 波形结果如图 2所示。
VHDL数字系统课程设计报告-5分频器的设计
图2 1
电子与信息工程系 2013 年 12 月
占空比为 1:1 的奇数分频器
(2) 占空比为 X/(2N+1)或(2N+1-X)/(2N+1)分频,用模(2N+1)计数器模块可以实 现。取 0 至 2N-1 之间一数值 X(0),当计数器时钟上升沿从 0 开始计数到 X 值时输出时钟翻 转一次,在计数器继续计数达到 2N 时,输出时钟再次翻转并对计数器置一复位信号,使之 从 0 开始重新计数,即可实现。如图 4 所示,由四个计数器生成了两个占空比 2:3 的分频 器 step1、和 step2。step1 由上升沿触发器出发,step2 由下降沿触发器出发。然后经过或 门生成占空比为 1:1 的分频器。
七、参考文献
[1] 夏宇闻. Verilog 数字系统设计教程. 北京: 北京航空航天大学出版社,2008 年; [2] 张继刚、李维忠. 现代电子技术. 内蒙古工业大学,2008 年,31(6); [3] 刘宝琴. 数字电路与系统[M]. 北京:清华大学出版社,1993 年; [4] 陈高峰等编. 数字电子技术基础. 安徽大学电子信息工程学院,2012 年; [5] 谈艳云、罗志强.电子技术基础. 北京:北京航空航天大学,2002 年,23(6)。
安康学院
HDL 数字系统课程设计报告书
课题名称: 占空比为 1:1 的奇数分频器设计 姓 名: 学 号: 院 系: 专 业: 指导教师: 时 间:
课程设计项目成绩评定表
设计项目成绩评定表
一、设计任务及要求: 1、设计任务:
设计一个占空比为 1:1 的奇数分频器逻辑电路。
2、要 求:
1、设计分频器的分频系数为 5。 2、设计分频器占空比为 1:1。 3、设计分频器为 5 分频器。 4、设计分频器输入信号:时钟信号 CLK。
分频器的VHDL设计
BEGIN
PROCESS(CLK,C1)
BEGIN
IF RISING_EDGE(CLK) THEN
IF(C1="011") THEN C1<="000"; ELSE C1<=C1+1;END IF;
IF(C1="001") THEN M1<=NOT M1; ELSIF(C1="011") THEN M1<=NOT M1;
IF(C2="001")THEN M2<=NOT M2;ELSIF (C2="100") THEN M2<=NOT M2;
END IF;END IF;
END PROCESS;
K1<=M1;K2<=M2;K_OR<=M1 OR M2;
END BHV;
半整数次分频:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
洛阳理工学院实验报告
系部
计算机与信息工程系
班级
学号
姓名
课程名称
PLD原理与应用
实验日期
2012.11.12
实验名称
实验四分频器的VHDL设计
成绩
实验目的:
1、练习应用QUARTUSⅡ开发环境
2、练习文件的建立,改编,编程,调试,修改,仿真。
3、学会设计奇数、偶数、半整数分频器。
实验条件:
装有QUARTUSⅡ软件的电脑
(1)建立新工程管理窗口。单击对话框第二栏右侧“···”按钮,找到文件夹d:\work\cnt10,选中已存盘文件cnt10.vhd,再单击“打开”按钮。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
开题报告
电子信息工程
基于VHDL的分频器设计
三、课题研究的方法及措施
由于本课题所设计的分频器基于EDA技术,应用VHDL硬件语言设计完成的,因此选择合适的硬件解决原理对分频器性能至关重要的,为了满足不同系统功能需求的分频,本课题将阐述不同原理,不同分频器,同种分频不同原理的设计方案。
占空比可控的整数分设计方案,原理为计数器为带预置数的计数器,其设计的特殊之处在于:可以根据需要,调整数据的位宽,而且计数的初始值是从l开始的,此处计数初始值的设定是设计的一个创新,这样做的目的是为了配合后面比较器的工作,计数器的输出数据作为比较器的输入,比较器的另一输入作为控制端,控制高低电平的比例,从而达到占空比可调的目的。
原理图如图1所示。
图1 占空比可控的原理图部分
小数分频的基本原理是采用脉冲吞吐计数器和锁相环技术先设计两个不同分频比的整数分频器,然后通过控制单位时间内两种分频比出现的不同次数来获得所需要的小数分频值。
如设计一个分频系数为lO.1的分频器时。
可以将分频器设计成9次10分频,1次11分频这样总的分频值为如式1所示。
F=(9×10+lxl 1)/(9+1)=10.1 (式1)
从这种实现方法的特点可以看出,由于分频器的分频值不断改变.因此分频后得到的信号抖动较大。
当分频系数为N-0.5(N为整数)时,可控制扣除脉冲的时间,以使输出成为一个稳定的脉冲频率。
而不是一次N分频.一次N-1分频。
图2给出了通用小数分频器的电路组成。
图2通用小数分频器的电路组成
改进的小数分频设计方案,将两个整数分频器由一个整数分频器和一个半整数分频器代替,结果在如上分析的两个性能方面都有所提高。
利用参数化的设计思想和VHDL描述语言与原理图输入方法相结合的方式,设计并实现了一种抖
动性能好且通用性强的小数分频器。
其原理图如下图3。
图3改进小数分频原理图
四、课题研究进度计划
毕业设计期限:自2011年12月10日至2012年3月10日。
第1周—第2周:查阅Altera公司的硬件资料,研究该类产品的设计技术。
第3周—第4周:查阅FPGA/CPLD技术,EDA技术,研究VHDL语言,并在QUARTUS Ⅱ上的工作环境。
第5周—第6周:完成,实现系统各项基本功能。
完成开题报告、文献综述、外文翻译系统总体方案设计,分频器系统的硬件语言设计软件设计仿真。
第7周—第8周:软件程序设计、系统调试以及撰写论文。
第9周—第10周:作品完善,论文修改。
五、参考文献
教师指定:
[1]徐向民.数字系统设计及VHDL实践[M].北京:机械工业出版社,2007,10.
[2]龚军,罗杰.基于FPGA实时电话计费器的设计[J]. 广西轻工业,2008,4,4:55~56.
[3]褚振勇,翁木云.FPGA设计及应用[M].西安:西安电子科技大学出版社,2002,7.
[4]汉泽西.EDA技术及其应用[M].北京:北京航空航天大学出版社,2004,5.
[5]张志刚.FPGA与SOPC设计教程DE2实践[M].西安:西安电子科技大学,2007,4.
自己选择:
[6]刘睿强. FPGA的应用技术及实践[M]. 北京:北京理工大学出版社,2011,1.
[7]罗朝霞. 高书莉. CPLD/FPGA设计及应用[M]. 人民邮电出版社, 2007,7.
[8]杨晓慧. 杨旭.FPGA系统设计与实例[M]. 人民邮电出版社, 2010,9.
[9]潘松. 黄继业. EDA技术实用教程[M]. 科学出版社,2010,6.
[10]王道宪. CPLD/FPGA可编程逻辑器件应用与开发[M]. 国防工业出版社, 2004.1.
[11]于彤;马社祥;郭琨. 基于FPGA的等占空比的整数分频器设计[D]. 天津理工大学,。