分频器设计 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设计 5倍分频器

基于FPGA的5倍分频器设计5倍分频器相当于将时钟频率除以5。
对于实现占空比为50%的N倍奇数分频,首先经过上升沿触发进行模N计数,计数选定到某一个值(0到N-1之间)进行输出时钟翻转,然后经过N-1再次进行翻转得到一个占空比非50%奇数N分频时钟。
再者同时进行下降沿触发的模N计数,到和上升沿触发输出时钟翻转选定值相同值时,进行输出时钟时钟翻转,同样经过N-1时,输出时钟再次翻转生成占空比非50%的奇数N分频时钟。
两个占空比非50%的N分频时钟相或运算,得到占空比为50%的奇数N分频时钟。
实现占空比为50%的5倍分频设计思路:首先经过上升沿触发进行模5计数,计数选定到2进行输出时钟翻转,然后经过4再次进行翻转得到一个占空比非50%奇数5分频时钟。
再者同时进行下降沿触发的模5计数,到和上升沿触发输出时钟翻转选定值相同值时,进行输出时钟翻转,同样经过4时,输出时钟再次翻转生成占空比非50%的5分频时钟。
两个占空比非50%的5分频时钟相或运算,得到占空比为50%的5分频时钟。
程序主体部分如下:p1:process(clk)beginif clk'event and clk='1' thentemp1<=temp1+1;if temp1=2 thendiv2<='1';elsif temp1=4 thendiv2<='0';temp1<=0;end if;end if;end process p1;p2:process(clk)beginif clk'event and clk='0' thentemp2<=temp2+1;if temp2=2 thendiv4<='1';elsif temp2=4 thendiv4<='0';temp2<=0;end if;end if;end process p2;p3:process(div2,div4)beginout1<=div2 or div4;end process p3;对程序进行编译仿真,设置时钟CLK为20ns,即50MHz,经五分频后,形成10MHz的输出脉冲。
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。
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的分频器设计[开题报告]
![基于VHDL的分频器设计[开题报告]](https://img.taocdn.com/s3/m/2e8aa70426fff705cd170a78.png)
开题报告电子信息工程基于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日。
基于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语言各种分频器的设计

硬件描述
使用VHDL,设计师可以描述电路 的结构、行为和功能,而无需关 心具体的物理实现细节。
设计层次
VHDL适用于不同层次的设计,从 门级到系统级,使得设计者可以 专注于设计逻辑而不是物理实现。
VHDL语言基本结构
实体
描述电路的输入和输出端口。
结构体
描述电路的内部逻辑和行为。
库
包含预定义的元件和函数。
end if;
end process;
8分频器设计
end Behavioral;
```
16分频器设计
16分频器:将输入频率降低到原来的 十六分之一。
VHDL代码实现
```vhdl
16分频器设计
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
03
if count = 3 then
4分频器设计
q <= '1';
count <= 0;
4分频器设计
01
else
02
q <= '0';
03
count <= count + 1;
4分频器设计
end if;
end if; end process;
4分频器设计
end Behavioral; ```
配置
指定实体和结构体的关联方式。
VHDL语言数据类型
标量类型
包括整数、实数、布尔等。
记录类型
组合不同数据类型的结构体。
向量类型
如位向量,用于表示位或字节。
数组类型
关于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%的输出时钟在输入时钟的上升沿触发翻转。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
课程名称电子设计自动化实验(基于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 IS
PORT(i:in std_logic;
o:inout std_logic);
END ENTITY;
ARCHITECTURE func OF fenpin10 IS
SIGNAL count:std_logic_vector(3 downto 0);
SIGNAL tmp:std_logic;
BEGIN
PROCESS(i)
BEGIN
IF(i'EVENT AND i = '1') THEN
IF(count = "1001") THEN --当计数满9时进位
count <= (OTHERS => '0');
tmp <= NOT tmp;
ELSE
count <= 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 IS
PORT(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 IS
COMPONENT fenpin10 --元件例化
PORT(i:in std_logic;
o:inout std_logic);
END COMPONENT;
SIGNAL x0,x1,x2,x3,x4,x5:std_logic;
BEGIN
u1: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。