数控分频器

合集下载

EDA实验报告

EDA实验报告

EDA实验报告班级:姓名:目录实验一:七段数码显示译码器设计 (1)摘要 (1)实验原理 (1)实验方案及仿真 (1)引脚下载 (2)实验结果与分析 (3)附录 (3)实验二:序列检测器设计 (6)摘要 (6)实验原理 (6)实现方案及仿真 (6)引脚下载 (7)实验结果与分析 (8)实验三:数控分频器的设计 (11)摘要 (11)实验原理 (11)方案的实现与仿真 (11)引脚下载 (12)实验结果及总结 (12)附录 (12)实验四:正弦信号发生器 (14)摘要 (14)实验原理 (14)实现方案与仿真 (14)嵌入式逻辑分析及管脚下载 (16)实验结果与分析 (17)附录 (18)实验一:七段数码显示译码器设计摘要:七段译码器是一种简单的组合电路,利用QuartusII的VHDL语言十分方便的设计出七段数码显示译码器。

将其生成原理图,再与四位二进制计数器组合而成的一个用数码管显示的十六位计数器。

整个设计过程完整的学习了QuartusII的整个设计流程。

实验原理:七段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用译码程序在FPGA\CPLD中来实现。

本实验作为7段译码器,输出信号LED7S的7位分别是g、f、e、d、c、b、a,高位在左,低位在右。

例如当LED7S 输出为“1101101”时,数码管的7个段g、f、e、d、c、b、a分别为1、1、0、1、1、1、0、1。

接有高电平段发亮,于是数码管显示“5”。

实验方案及仿真:I、七段数码显示管的设计实现利用VHDL描述语言进行FPGA上的编译实现七段数码显示译码器的设计。

运行QuartusII在G:\QuartusII\LED7S\下新建一个工程文件。

新建一个vhdl语言编译文件,编写七段数码显示管的程序见附录1-1。

2014数字系统与逻辑设计题目(电自 ) (1)

2014数字系统与逻辑设计题目(电自   ) (1)

《数字系统与逻辑设计》课程设计一、基本要求课程设计的基本任务,是着重提高动手能力及在字集成电路应用方面的实践技能,培养综合运用理论知识解决实际问题的能力。

各组人员可分别通过设计图纸,上网查找资料以及撰写报告这几个过程来锻炼逻辑思维能力及实际动手能力。

从实际操作中学习知识,思考存在的问题以及解决问题。

各班同学可选择以小组为单位完成课设,也可以独立完成,每个小组不超过3个人。

各组可从后面所列22个题目中任选一个,但同一个题目一个班内只允许选择一个,不同班级的同样题目的小组课程设计内容和形式不能相同。

由学习委员负责记录分组及协调。

电自12151在18周周1前完成并提交,提交的文件包括:1、一份用WORD完成的课程设计报告,要求打印,格式见后面的附件,2、设计图纸(A2图纸)手绘或使用相关绘图软件。

设计图纸中所有涉及的元器件要附上元器件明细表。

注:每个小组的电子文档要求汇总打包,由各班团支书、班长、学习委员和科代表4人共同负责提交指导教师处批改备案。

二、题目贵州大学明德学院课程设计报告(一号仿宋GB)课程名称:(三号宋体)系部:(三号宋体)专业班级:(三号宋体)小组成员:(三号宋体)指导教师:(三号宋体)完成时间:(三号宋体)×××课程设计报告(二号黑体)一. 设计要求(三号宋体)说明:指所设计题目的具体要求×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××(1).××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××(2).××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××(3).××××××××××××××(小四号宋体)二. 设计的作用、目的(三号宋体)掌握××的原理×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××(小四号宋体)三.设计的具体实现(三号宋体)1.系统概述(小三号宋体)简单介绍系统设计思路与总体方案的可行性论证,各功能块的划分与组成,全面介绍总体工作过程或工作原理。

梁祝

梁祝

乐谱演奏电路设计——梁祝实验目的:利用数控分频器设计硬件乐曲演奏电路实验原理:主系统由三个模块组成:notetaba.vhd tone.vhd speakera.vhd实验过程:(1)新建MIF文件(2)创建Rom模块,将生成的文件命名MUSIC1.VHD 保存并编译LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.all;ENTITY music1 ISPORT(address : IN STD_LOGIC_VECTOR (7 DOWNTO 0);clock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) );END music1;ARCHITECTURE SYN OF music1 ISSIGNAL sub_wire0 : STD_LOGIC_VECTOR (3 DOWNTO 0);COMPONENT altsyncramGENERIC (address_aclr_a : STRING;clock_enable_input_a : STRING;clock_enable_output_a : STRING;init_file : STRING;intended_device_family : STRING;lpm_hint : STRING;lpm_type : STRING;numwords_a : NATURAL;operation_mode : STRING;outdata_aclr_a : STRING;outdata_reg_a : STRING;widthad_a : NATURAL;width_a : NATURAL;width_byteena_a : NATURAL);PORT (clock0 : IN STD_LOGIC ;address_a : IN STD_LOGIC_VECTOR (7 DOWNTO 0);q_a : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) );END COMPONENT;BEGINq <= sub_wire0(3 DOWNTO 0);altsyncram_component : altsyncramGENERIC MAP (address_aclr_a => "NONE",clock_enable_input_a => "BYPASS",clock_enable_output_a => "BYPASS",init_file => "music.mif",intended_device_family => "Cyclone III",lpm_hint => "ENABLE_RUNTIME_MOD=NO",lpm_type => "altsyncram",numwords_a => 256,operation_mode => "ROM",outdata_aclr_a => "NONE",outdata_reg_a => "CLOCK0",widthad_a => 8,width_a => 4,width_byteena_a => 1)PORT MAP (clock0 => clock,address_a => address,q_a => sub_wire0);END SYN;(3)新建VHDL文件,设置8位二进制,作为音符数据ROM的地址发生器,并利用原件例化调用MUSIC1.library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity NOTETABS isport(CLK: in std_logic;TONEINDEX:OUT std_logic_vector(3 downto 0));end ;architecture one of NOTETABS isCOMPONENT MUSIC1PORT(clock : IN STD_LOGIC ;address : IN STD_LOGIC_VECTOR (7 DOWNTO 0);q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0));END COMPONENT;SIGNAL COUNTER:std_logic_vector(7 downto 0);BEGINCNT8:PROCESS(CLK,COUNTER)BEGINIF COUNTER=138 THEN COUNTER<="00000000";ELSIF(CLK'EVENT AND CLK='1')THEN COUNTER<=COUNTER+1;END IF;END PROCESS;U1 :MUSIC1 PORT MAP(address=>COUNTER,q=>TONEINDEX,CLOCK=>CLK);END;()编译并生成原理图文件(4)新建VHDL文件为分频预置数查表电路,为SPEAKERA提供所发音的分频预置数,library ieee;use ieee.std_logic_1164.all;entity TONE isPORT(INDEX :in std_logic_vector(3 downto 0); --音符输入信号CODE: out std_logic_vector(3 downto 0); --音符显示信号HIGH :out std_logic; --高低音显示信号TONE : OUT std_logic_vector(10 downto 0)); --音符的分频系数end TONE;architecture ONE of TONE isbeginSEARCH :process(INDEX)begincase INDEX iswhen "0000" => TONE<="11111111111" ; CODE <="0000"; HIGH<='0';when "0001" => TONE<="01100000101" ; CODE <="0001"; HIGH<='0';when "0010" => TONE<="01110010000" ; CODE <="0010"; HIGH<='0';when "0011" => TONE<="10000001100" ; CODE <="0011"; HIGH<='0';when "0101" => TONE<="10010101101" ; CODE <="0101"; HIGH<='0';when "0110" => TONE<="10100001010" ; CODE <="0110"; HIGH<='0';when "0111" => TONE<="10101011100" ; CODE <="0111"; HIGH<='0';when "1000" => TONE<="10110000010" ; CODE <="0001"; HIGH<='1';when "1001" => TONE<="10111001000" ; CODE <="0010"; HIGH<='1';when "1010" => TONE<="11000000110" ; CODE <="0011"; HIGH<='1';when "1100" => TONE<="11001010110" ; CODE <="0101"; HIGH<='1';when "1101" => TONE<="11010000100" ; CODE <="0110"; HIGH<='1';when "1111" => TONE<="11011000000" ; CODE <="0001"; HIGH<='1';when others => NULL;end case;end process;end ;(5)编译并导出原理图文件(6)新建VHDL文件数控分频器用于音符的频率获得,library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity SPEAKER isport(CLK: in std_logic; --系统时钟12MHZTONE: in std_logic_vector(10 downto 0); --音符分频系数SPKS: out std_logic); --驱动扬声器的音频信号end SPEAKER;architecture one of SPEAKER issignal PRECLK, FULLSPKS:std_logic;begindivideclk:process(CLK) --此进程对系统时钟进行16分频variable COUNT4:std_logic_vector(3 downto 0);beginpreclk<='0';if COUNT4>11 then PRECLK<='1';count4:="0000";elsif clk'event and clk='1'then count4:=count4+1;end if;end process ;genspks:process(PRECLK,TONE) --对0.75MHZ的脉冲再次分频,得到所需要的音符频率variable COUNT11:std_logic_vector(10 downto 0);beginif PRECLK'event and PRECLK='1' thenif COUNT11=16#7FF# then COUNT11:=TONE; FULLSPKS<='1';else COUNT11:=COUNT11+1; FULLSPKS<='0';end if;end if;end process ;DELAYSPKS:process(FULLSPKS) --此进程对FULLSPKS进行2分频variable COUNT2: std_logic;beginif FULLSPKS'event and FULLSPKS='1' then COUNT2:=NOT COUNT2;if COUNT2='1' then SPKS<='1';else SPKS<='0';end if;end if;end process ;end ;(7)编译并生成原理图模块(8)编译整个与原理图文件并用波形仿真(9)分配引脚并下载到实验箱(10)实验总结:本次实验利用宏功能模块来制作梁祝的乐曲演奏,简单易懂,较之vhdl容易很多。

音乐数控分频器 计算

音乐数控分频器 计算

音乐数控分频器计算
一个分频器设计的参考公式,在实际中,分频器的各元件数值可能与这相比有相当大的不同,这是因为扬声器的阻抗特性并不是线性的,而是随着频率的升高同样也在上升。

而且扬声器的频响特性也并不是完全平直的,在它的频响特性曲线上有许许多多的微小峰谷,这些都给分频器的实际设计带来了非常大的影响,因为众所周知的原因,分频器的理论计算公式是建立在以理想电阻取代扬声器的基础上的。

如果是采用加法计数器来实现分频,预置数为2,即起始计数值=2,那么还有个重要的参数是需要知道的,就是计数器的模。

从左到右,触发器输入输出设为D1、Q1,D2、Q2;D1 = Q2,D2 =(Q1+Q2)' ;Q2n = D2;设初态为Q1 = Q2 = 0;那么就是Q1=0,Q2=0,D1=0,D2=1;第1个脉冲到来后,Q1=0,Q2=1--->D1=1--->D2=0;第2个脉冲到来后,Q1=1,Q2=0--->D1=0--->D2=0;第3个脉冲到来后,Q1=0,
Q2=0--->D1=0--->D2=1;此时就回到了初态,从而进入下一个循环,就是每3个时钟脉冲一个循环;这里Q1、Q2互为反相。

电容C的计算公式:
C=1(2πfR)
式中f是分频频率,R是高音扬声器的阻抗。

分频频率可以选择在2~5kHz左右。

例如分频频率选在4kHz,高音扬声器阻抗为8Ω,则1(2π*4000*8)≈0.000005法拉,换算成微法就是5微法。

注意这是个无极性电容。

电容和电感组成效果更好的二分频器。

EDA实验报告(12份).pdf

EDA实验报告(12份).pdf

实验一组合电路的设计1. 实验目的:熟悉MAX + plus II 的VHDL 文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。

2. 实验内容:设计一个2选1多路选择器,并进行仿真测试,给出仿真波形。

3. 实验程序如下:library ieee;use ieee.std_logic_1164.all; entity mux21a isport(a,b,s:in std_logic;y:out std_logic); end entity mux21a; architecture one of mux21a is beginy<=a when s='0' else b ; end architecture one ;4. 仿真波形(如图1-1所示)图1-1 2选1多路选择器仿真波形5. 试验总结:从仿真波形可以看出此2选1多路选择器是当s为低电平时,y输出为b, 当s为高电平时,y输出为a(y<=a when s='0' else b ;),完成2路选择输出。

实验二时序电路的设计1. 实验目的:熟悉MAX + plus II VHDL文本设计过程,学习简单的时序电路设计、仿真和测试。

2. 实验验内容:设计一个锁存器,并进行仿真测试,给出仿真波形。

3. 实验程序如下:library ieee;use ieee.std_logic_1164.all;entity suocun7 isport(clk: in std_logic;en: in std_logic;D: in std_logic_vector(7 downto 0);B:out std_logic_vector(7 downto 0)); end suocun7;architecture one of suocun7 issignal K: std_logic_vector(7 downto 0); beginprocess(clk,en,D)beginif clk'event and clk='1' thenif en ='0'thenK<=D;end if;end if;end process;B<=K;end one;4.仿真波形(如图2-1所示)图2-1 8位锁存器仿真波形此程序完成的是一个8位锁存器,当时钟上升沿到来(clk'event and clk='1')、使能端为低电平(en ='0')时,输出为时钟上升沿时的前一个数,从仿真波形看,实现了此功能。

(完整版)FPGA课程设计(最终版)

(完整版)FPGA课程设计(最终版)

课程设计任务书学生姓名:专业班级:指导教师:工作单位:信息工程学院题目: 电子琴的设计课程设计目的:《FPGA原理与应用》课程设计的目的是为了让学生熟悉基于VHDL语言进行FPGA开发的全流程,并且利用FPGA设计进行专业课程理论知识的再现,让学生体会EDA技术的强大功能,为今后使用FPGA进行电子设计奠定基础。

课程设计内容和要求设计内容:(1)设计一个八音电子琴。

(2)由键盘输入控制音响,同时可自动演奏乐曲。

(3)用户可以将自己编制的乐曲存入电子琴,演奏时可选择键盘输入乐曲或者已存入的乐曲。

要求每个学生单独完成课程设计内容,并写出课程设计说明书、说明书应该包括所涉及到的理论部分和充足的实验结果,给出程序清单,最后通过课程设计答辩。

时间安排:指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (1)Abstract (2)1设计意义和要求 (3)1.1设计意义 (3)1.2功能要求 (3)2方案论证及原理分析 (4)2.1实现方案比较 (4)2.2乐曲实现原理 (4)2.3系统组成及工作原理 (6)3系统模块设计 (8)3.1顶层模块的设计 (8)3.2乐曲自动演奏模块的设计 (8)3.3音阶发生器模块的设计 (9)3.4数控分频器模块的设计 (9)4程序设计 (11)4.1VHDL设计语言和ISE环境简介 (11)4.2顶层模块的程序设计 (12)4.3乐曲自动演奏模块的程序设计 (13)4.4音阶发生器模块的程序设计 (13)4.5数控分频模块的程序设计 (14)5设计的仿真与实现 (15)5.1乐曲自动演奏模块仿真 (15)5.2音调发生模块仿真 (18)5.3数控分频模块仿真 (19)5.4电子琴系统的仿真 (20)5.5设计的实现 (22)5.6查看RTL视图 (23)5.7查看综合报告 (25)6心得体会 (31)7参考文献 (32)8附录 (33)摘要随着基于FPGA的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制用计算机等领域的重要性日益突出。

(VHDL实验报告)模值12计数器、分频器的设计

(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 软件。

数控分频的原理

数控分频的原理

数控分频的原理数控分频是一种将输入信号的频率分成多个不同频率的输出信号的技术。

它在许多领域中都有广泛的应用,包括通信、无线电、音频和视频等。

数控分频的原理基于信号处理和频率合成的概念。

它通常由一个称为分频器的电路来实现,该电路可以将输入信号的频率分成多个输出信号的频率。

数控分频的基本原理是通过改变输入信号的周期或频率来实现频率分割。

这可以通过使用计数器和比较器来实现。

计数器用于计算输入信号的周期或频率,而比较器用于将计数器的输出与预设的阈值进行比较。

当计数器的输出达到或超过预设的阈值时,比较器会产生一个脉冲信号,表示一个输出信号的周期已经完成。

在数控分频中,计数器的计数范围决定了输出信号的频率范围。

例如,如果计数器的计数范围为0到99,那么输出信号的频率将是输入信号频率的1/100。

如果计数范围为0到9,那么输出信号的频率将是输入信号频率的1/10。

通过调整计数器的计数范围,可以实现不同的输出频率。

除了计数器和比较器,数控分频还可以使用其他电路来实现更复杂的功能。

例如,可以使用锁相环(PLL)来实现精确的频率合成。

PLL是一种反馈控制系统,可以将输入信号的频率与参考信号的频率进行比较,并通过调整输出信号的相位和频率来使它们保持同步。

通过使用PLL,可以实现更高精度和稳定性的频率分割。

数控分频还可以通过使用数字信号处理(DSP)技术来实现。

DSP是一种将模拟信号转换为数字信号,并对其进行处理和分析的技术。

通过使用DSP,可以实现更复杂的信号处理功能,例如滤波、混频和调制等。

数控分频的应用非常广泛。

在通信领域,数控分频可以用于频率调制和解调、信号生成和信号分析等。

在无线电领域,数控分频可以用于频率合成器、频率计数器和频谱分析仪等。

在音频和视频领域,数控分频可以用于音频合成器、视频处理器和数字音频播放器等。

总之,数控分频是一种将输入信号的频率分成多个不同频率的输出信号的技术。

它基于信号处理和频率合成的原理,通过使用计数器、比较器、锁相环和数字信号处理等技术来实现。

基于FPGA的数控分频器的实现

基于FPGA的数控分频器的实现
第 8卷, l 期 第 l
V 1 8 N o 1 0 1
电 子
与 封

ELECTR0NI CS & PACKAGI NG
总 第6 7期 20 0 8年 1 1月
电 路 设 计
基 于 F G 的数控 分频 器的 实现 P A
庄 海 军 ,林 咏 海
( 江苏省电子产 品装备制造工程技术研究开发中心 ,江苏 准安 2 3 0 ) 2 o 3
us 1yde i e y h r w a ec r ui i h a tt b an t e d sr d fe u n y Th ntge qu nc ua 1 sgn d b a d r ic t n te p s O O t i h e ie } q e c . e i e rfe e y
2 整数分频器的 VHD L设计
在数字 电路 中,对于 2分频 、4分频 、8分频等 2的整 数次 方的 分频 ,其 硬件 电路 实现时也 非 常简 单 ,只需 要相 应地 计数器就 可 以实现 了。 比如在实 现 四分频 时 ,只需要 设计一 个 4进 制计 数器就 可以 了 ,在输 入端加 上时 钟信号 ,则在 计数 器的 最高位
软件 和 AL E T RA 公 司的 F E 系列 E F1 Kl L 44型 F GA 方 便 地 完 成 了各 种 类型 分 频 比 电路 的 LX P 0 0 C8 . P
设计。
关键词 :F GA;数控 分频 器;数字逻辑 电路 P
中图分类号 : N4 2 T 0
文献标识码 :A
频器是 集成 电路 中最 基础也 是最 常用的 电路 。整数
分频 器的实现 比较 简单 ,可采用标 准 的计数 器或可 编程逻辑 器件 设计 实现 。但 在某 些场合 下 ,时 钟源 与所 需的频率 不一 定成整 数倍 的关系 ,此时 则需要 采用 小数分频 器进行 分频 。但用 传统 的硬件 电路实 现小 数分 频时 会 变得 比较 麻烦 。 为避 免这 些 缺点 ,

河南工业大学EDA技术 实验报告实验五 用LPM设计8位数控分频器和4位乘法器

河南工业大学EDA技术 实验报告实验五  用LPM设计8位数控分频器和4位乘法器

河南工业大学EDA技术实验报告专业电科班级姓名学号 2 实验地点6526+ 6215 实验日期-11-4 成绩评定一、实验项目实验五用LPM设计8位数控分频器和4位乘法器二、实验目的掌握LPM模块的参数设置方法以及设计和应用方法。

三、实验原理对于高速测控系统,影响测控速度最大的因素可能是,在测得必要的数据并经过复杂的运算后,才能发出控制指令。

因此数据的运算速度决定了此系统的工作速度。

为了提高运算速度,可以用多种方法来解决,如高速计算机、纯硬件电路、ROM查表式运算器等。

用高速计算机属于软件解决方案,用纯硬件运算器属于硬件解决方案,而ROM属于查表式运算解决方案。

数控分频器的功能要求为:若在其输入端给定不同的数据,其输出脉冲具有相应的对输入时钟的分频比。

设计流程是首先按照原理图输入的设计步骤,通过元件输入窗在原理图编辑窗中调入兆功能块,并按图连接起来,其中计数器LPM-COUNTER模块的参数设置可按照以下介绍的方法进行。

硬件乘法器有多种实现方法,相比之下,由高速RAM构成乘法表方式的乘法表方式的乘法器的运算速度最快。

8位数控分频器电路原理图用LPM_ROM设计的4位乘法器原理图DFF的VHDL代码:(1)8位数控分频器数控分频器的功能要求为:若在其输入端给定不同的数据,其输出脉冲具有相应的对输入时钟的分频比。

(2)4位乘法器硬件乘法器有多种实现方法,相比之下,由高速RAM构成乘法表方式的乘法表方式的乘法器的运算速度最快。

一个4×4bit查表式乘法器乘法表文件如下图所示;四、仿真结果及分析下图即为8位数控分频器的仿真结果,仿真参数设置时具体设置界面如下图所示,波形图如图;下图即为乘法器的仿真结果,仿真参数设置时具体设置界面如下图所示;五、硬件验证过程及结果分析数控分频器的硬件验证时通过数码管来观察分频器的数据变化情况。

4位乘法器的硬件测试引脚并连接至插槽,通过数码管来观察数据相乘后的结果。

EDA实验指导(基于DE2-115)

EDA实验指导(基于DE2-115)

EDA实验指导(基于DE2-115)信息科学与工程学院电子信息系徐雯娟编著EDA实验指导(基于DE2-115)实验一:一位全加器设计——原理图设计初步以下拟通过1位全加器的设汁,介绍原理图输入的基木设计方法。

软件基于quartus213.0版本。

1位全加器可以用两个半加器及一个或门连接而成,因此需要先完成半加器的设计。

下面将给出使用原理图输入的方法进行底层元件设计和层次化设计的主要步骤。

1.新建工程点击两次“next”后,如下图。

假设本项设计的文件夹取名为adder4,路径为:d:\ex\adder4(建议大家把所有的EDA实验都放在一个文件夹中,如ex,然后为每个实验在这个文件夹中新建一个文件夹,以实验名命名,如adder4)。

选择目标芯片:cycloneIVE系列的EP4CE11529C7,如图:直接next,之后到达完成界面,这里会看见关于整个工程的一些信息,核对一下是否正确,然后点击“finish”。

此时界面上会出现顶层文件名和项目名:2.新建原理图文件原理图编辑输入流程如下:(1)新建原理图文件。

打开QuartusII,选菜单“File”一“New”,在弹出的“New-”对话框中选择“Design Files”的原理图文件编辑输入项“Block block diagram/schematic File"按"OK"后将打开原理图编辑窗。

(2)在编辑窗中调入元件,完成半加器的原理图输入。

点击按纽“”或直接双击原理图空白处,从“Symbol”窗中选择需要的符号,或者直接在“name”文本框中键入元件名,如“and2”为2输入与门,点OK按钮,即将元件调入原理图编辑窗中。

例如为了设计半加器,分别调入元件and2,not,xnor和输入输出引脚input和output。

并如图用点击拖动的方法连接好电路。

然后分别在input和output的PIN NAME上双击使其变黑色,再用键盘分别输入各引脚名:a、b,co和s。

Verilog HDL数字设计教程(贺敬凯)第7章

Verilog HDL数字设计教程(贺敬凯)第7章

图7-2 跑马灯模块端口框图
第7章 Verilog HDL可综合设计举例
4. 代码分析 【例7-1】 设计源码。 module paomadeng(rst,clk,sel,led); input rst,clk; input[1:0] sel; output[7:0] led; reg[7:0] led;
第7章 Verilog HDL可综合设计举例
end end default: ; endcase
end
endmodule
第7章 Verilog HDL可综合设计举例
程序说明:
(1) case语句用于选择三种模式。当case表达式中的sel为
2'b00时选择模式1,为2'b01时选择模式2,为2'b11时选择模式3。
第7章 Verilog HDL可综合设计举例
if(cnt8>=7) cnt8<=0; else cnt8<=cnt8+1; SM_in <= 2*cnt8+1; //生成待显示数据为1, 3, 5, ... SM_B=1<<cnt8; //生成位选信号
end
endmodule 例7-4是扫描显示的顶层模块。其中:clk是扫描时钟; SM_7S为7段控制信号,由高位至低位分别接g、f、e、d、c、b、 a 7个段;SM_B是位选控制信号,接图7-6中的8个选通信号K1、 K2、…、K8。
第7章 Verilog HDL可综合设计举例
2'b11: begin
if(!dir) begin
if(cnt3==0) begin led_r=8'b00000001;led_r1=8'b10000000;end else begin led_r=(led_r<<1)| led_r; led_r1=(led_r1>>1)| led_r1; end led<=led_r | led_r1; if(cnt3==3) begin dir<=~dir; end cnt3<=cnt3+1; end else

参数可设置LPM宏功能块应用

参数可设置LPM宏功能块应用

aset:异步置位输入;
]:计数输出;
sload:在clk的上升沿同步并行数据加载输入; cout:计数进位或借位输出。
LPM_WIDTH:计数器位宽;
cnt_en:计数使能控制,
1.1 基于LPM_COUNTER的数控分频器设计
图6-19 数控分频器电路原理图
1.1 基于LPM_COUNTER的数控分频器设计
WIDTH = 8 ; DEPTH = 256 ; ADDRESS_RADIX = HEX ; DATA_RADIX = HEX ; CONTENT BEGIN 00:00 ; 01:00 ; 02:00 ; 03:00 ; 04:00 ; 05:00 ; 06:00 ; 07:00 ; 08:00 ; 09:00; 10:00 ; 11:01 ; 12:02 ; 13:03 ; 14:04 ; 15:05 ; 16:06 ; 17:07 ; 18:08 ; 19:09; 20:00 ; 21:02 ; 22:04 ; 23:06 ; 24:08 ; 25:10 ; 26:12 ; 27:14 ; 28:16 ; 29:18; 30:00 ; 31:03 ; 32:06 ; 33:09 ; 34:12 ; 35:15 ; 36:18 ; 37:21 ; 38:24 ; 39:27; 40:00 ; 41:04 ; 42:08 ; 43:12 ; 44:16 ; 45:20 ; 46:24 ; 47:28 ; 48:32 ; 49:36; 50:00 ; 51:05 ; 52:10 ; 53:15 ; 54:20 ; 55:25 ; 56:30 ; 57:35 ; 58:40 ; 59:45; 60:00 ; 61:06 ; 62:12 ; 63:18 ; 64:24 ; 65:30 ; 66:36 ; 67:42 ; 68:48 ; 69:54; 70:00 ; 71:07 ; 72:14 ; 73:21 ; 74:28 ; 75:35 ; 76:42 ; 77:49 ; 78:56 ; 79:63; 80:00 ; 81:08 ; 82:16 ; 83:24 ; 84:32 ; 85:40 ; 86:48 ; 87:56 ; 88:64 ; 89:72; 90:00 ; 91:09 ; 92:18 ; 93:27 ; 94:36 ; 95:45 ; 96:54 ; 97:63 ; 98:72 ; 99:81; END ;

乐曲硬件演奏电路设计

乐曲硬件演奏电路设计

乐曲硬件演奏电路设计一、设计任务与要求设计目的:利用数控分频器设计硬件演奏电路。

设计内容:学习课本定制音符数据ROM“music”。

填入新的乐曲。

争取可以在一个ROM装上多首歌曲,可手动或自动选择歌曲。

设计要求:用仿真波形和电路原理图,详细叙述硬件电子琴的工作原理及其VHDL文件中相关语句功能,叙述硬件实现情况。

二、总体框图设计思路:在《可编程逻辑设计》课程中,已经学习过数控分频器设计,即输入不同的预置数即可发出不同频率的声音。

由此,可以以此为设计基础。

设计一功能模块,能够将乐曲中的音符逐一以对应的频率以预置数的形式置入数控分频计中,即可利用该数控分频计产生不同的声音,演奏出设定好的音乐。

ROM中的音乐数据文件刚可由编辑好的音符填入MIF文件中再定制LPM_ROM 将音符数据加载入ROM中,并设计程序在运行时自动读取ROM中的文件并置入数控分频器中。

当采用四四拍曲子时,每节拍持续时间为0.5秒。

置入数控分频器的速度也应与此同步或一致,避免音乐过快或过快慢而失真。

我给出的C调音阶频率表,各频率对应的预置数就与数控分频推动蜂鸣器发出声音的频率对应。

在编写数控分频器时,不仅要考虑预置数的输入方式,还要考虑输入的速度,以及驱动蜂鸣器发声的频率。

为了在扩展能够在ROM中同时存放多首歌曲,并可以手动选择需要的歌曲,故可将ROM中分若干段存放不同曲子。

当手动选择歌曲时,可根据输入的选择信号,读出ROM中对应地址的曲子,并将ROM中的曲子完整的播放出来。

为了显示高、中、低三种音调,可在音符>>预置数的译码过程中,同时译出高、中、低三种音阶的信号,并利用三个LED灯输出信号。

同时,也可利用该译码模块,将当前演奏的音符简谱表达出来。

下面给出C调音节频率表:三、功能模块-1、音乐数据ROM模块:该模块为音乐曲谱的存放文件。

其利用LPM_ROM宏模块将共设定512个音符,每个音符宽度为5位,可存放高、中、低三阶21个音符的数据。

数控分频器设计

数控分频器设计

EDA设计课程实验报告实验题目:数控分频器设计学院名称:专业:班级:姓名:高胜学号小组成员:指导教师:一、实验目的学习数控分频器的设计、分析和测试方法。

二、设计任务及要求1、设计总体要求:在SmartSOPC试验箱上的实现数控分频器的设计。

在clk输入64kHz或更高(要确保分频后落在音频范围)的频率信号(由int_div模块分频得到);输出FOUT接蜂鸣器BUZZ-ER,由KEY1/KEY2控制输入8位预置数,并在数码管1~2上显示(调用key_led模块)。

2、设计基本要求:(1)能将频率分频。

(2)进行正常的蜂鸣器的蜂鸣功能。

(3)由2个数码管显示预置数。

三、系统设计1、整体设计方案数控分频器的输出信号频率为输入数据的函数。

数控分频器的clk为时钟输入端,data是数据输入端,fout是数控频率输出端。

数控分频器的输出频率受数据data的控制,data越大,输出频率越高。

数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可。

数控分频器是由数码管显示电路、按键控制电路、脉冲发生电路这3个基本电路组成。

数控分频器的系统框图(见图1):图1 数控分频器的系统框图2、功能模块电路设计48MHz的脉冲经过分频器分成64KHz,然后输入带数控分频电路当中,按键控制分频电路中的频率变化,数码管显示预置数,蜂鸣器响起。

(1)输入输出模块框图(见图2)图2 数控分频器的输入输出模块框图(2)算法流程图(见图3)图3数控分频器的算法流程图(3)Verilog源代码按键控制电路代码:module key_led(clock,key,led,hex,bin,seg,dig,ledin,data);input clock; //系统时钟(48MHz)input[7:0] key; //按键输入(KEY1~KEY8)output[7:0] led; //LED输出(LED1~LED8)output[15:0]hex; //4位16进制数输出(在数码管1~4显示)output[3:0]bin; //4位2进制数输出(在LED1~LED4显示)output[7:0]seg; //数码管段码输出output[7:0]dig; //数码管位码输出input[3:0]ledin; //LED显示输入(在LED5~LED8显示)input[15:0]data; //数码管显示输出(在数码管5~8显示)reg[15:0]hex_r;reg[3:0]bin_r;reg[7:0]seg_r;reg[7:0]dig_r;reg[16:0]count; //时钟分频计数器reg[7:0]dout1,dout2,dout3,buff; //消抖寄存器reg[2:0]cnt3; //数码管扫描计数器reg[3:0]disp_dat; //数码管扫描显存reg div_clk; //分频时钟,用于消抖和扫描wire[7:0]key_edge; //按键消抖输出//信号输出assign hex = hex_r;assign bin = bin_r;assign seg = seg_r;assign dig = dig_r;assign led = ~{ledin,bin_r};//时钟分频部分always @(posedge clock)beginif (count < 17'd120000)begincount <= count + 1'b1;div_clk <= 1'b0;endelsecount <= 17'd0;div_clk <= 1'b1;endend//按键消抖部分always @(posedge clock)beginif(div_clk)begindout1 <= key;dout2 <= dout1;dout3 <= dout2;endend//按键边沿检测部分always @(posedge clock)beginbuff <= dout1 | dout2 | dout3;endassign key_edge = ~(dout1 | dout2 | dout3) & buff;//4位16进制数输出部分always @(posedge clock) //按键1 beginif(key_edge[0])hex_r[15:12] <= hex_r[15:12] + 1'b1;endalways @(posedge clock) //按键2 beginif(key_edge[1])hex_r[11:8] <= hex_r[11:8] + 1'b1;always @(posedge clock) //按键3 beginif(key_edge[2])hex_r[7:4] <= hex_r[7:4] + 1'b1;endalways @(posedge clock) //按键4 beginif(key_edge[3])hex_r[3:0] <= hex_r[3:0] + 1'b1;end//4位2进制数输出部分always @(posedge clock) //按键5 beginif(key_edge[4])bin_r[0] <= ~bin_r[0];endalways @(posedge clock) //按键6 beginif(key_edge[5])bin_r[1] <= ~bin_r[1];endalways @(posedge clock) //按键7 beginif(key_edge[6])bin_r[2] <= ~bin_r[2];endalways @(posedge clock) //按键8 beginif(key_edge[7])bin_r[3] <= ~bin_r[3];//数码管扫描显示部分always @(posedge clock) //定义上升沿触发进程beginif(div_clk)cnt3 <= cnt3 + 1'b1;endalways @(posedge clock)beginif(div_clk)begincase(cnt3) //选择扫描显示数据3'd0:disp_dat = hex_r[15:12]; //第一个数码管3'd1:disp_dat = hex_r[11:8]; //第二个数码管3'd2:disp_dat = hex_r[7:4]; //第三个数码管3'd3:disp_dat = hex_r[3:0]; //第四个数码管3'd4:disp_dat = data[15:12]; //第五个数码管3'd5:disp_dat = data[11:8]; //第六个数码管3'd6:disp_dat = data[7:4]; //第七个数码管3'd7:disp_dat = data[3:0]; //第八个数码管endcasecase(cnt3) //选择数码管显示位3'd0:dig_r = 8'b01111111; //选择第一个数码管显示3'd1:dig_r = 8'b10111111; //选择第二个数码管显示3'd2:dig_r = 8'b11011111; //选择第三个数码管显示3'd3:dig_r = 8'b11101111; //选择第四个数码管显示3'd4:dig_r = 8'b11110111; //选择第五个数码管显示3'd5:dig_r = 8'b11111011; //选择第六个数码管显示3'd6:dig_r = 8'b11111101; //选择第七个数码管显示3'd7:dig_r = 8'b11111110; //选择第八个数码管显示endcaseendalways @(disp_dat)begincase(disp_dat) //七段译码4'h0:seg_r = 8'hc0; //显示04'h1:seg_r = 8'hf9; //显示14'h2:seg_r = 8'ha4; //显示24'h3:seg_r = 8'hb0; //显示34'h4:seg_r = 8'h99; //显示44'h5:seg_r = 8'h92; //显示54'h6:seg_r = 8'h82; //显示64'h7:seg_r = 8'hf8; //显示74'h8:seg_r = 8'h80; //显示84'h9:seg_r = 8'h90; //显示94'ha:seg_r = 8'h88; //显示a4'hb:seg_r = 8'h83; //显示b4'hc:seg_r = 8'hc6; //显示c4'hd:seg_r = 8'ha1; //显示d4'he:seg_r = 8'h86; //显示e4'hf:seg_r = 8'h8e; //显示f endcaseendendmodule数控分频电路代码:module pulse(clk,data,fout); //数控分频器 input clk; //时钟输入 input[7:0]data; //预置分频数reg fout_r; //输出寄存器reg[7:0] cnt8; //8位计数器reg full; //溢出标志位reg cnt2;assign fout = fout_r; //分频输出always @(posedge clk)beginif(cnt8 == 8'hff)begincnt8 <= data; //当cnt8计数计满时,输入数据Data被同步预置给计数器Cnt8 full <= 1'b1; //同时使溢出标志信号full输出为高电平endelsebegincnt8 <= cnt8 + 1'b1;//否则继续作加1计数full <= 1'b0; //且输出溢出标志信号full为低电平endendalways @(posedge full)beginif(full == 1'b1)begincnt2 = ~cnt2; //如果溢出标志信号full为高电平,D触发器输出取反if(cnt2 == 1'b1)fout_r = 1'b1;elsefout_r = 1'b0;endendendmodule四、系统调试1、仿真调试(1)仿真波形图(见图4)图4 数控分频器仿真波形(2)波形分析由波形图可以知道实验成功。

数控分频器的设计PPT课件

数控分频器的设计PPT课件

编辑本段生产类型
生产类型通常分为三类。
1.单件生产 单个地生产某个零件,很少重复地生 产。
2.成批生产 成批地制造相同的
零件的生产。
3.大量生产 当产品的制造数量很大,大多数工作地 点经常 是重复 进行一 种零件 的某一 工序的 生产。
加强欧洲开发MEMS的力量,一些欧 洲公司 已组成 MEMS开发集 团。
目前已有大量的微型机械或微型系统被 研究出 来,例 如:
尖端直径为5μm的微型镊子可 以夹起 一个红 血球, 尺寸为7m m× 7mm× 2mm的微型 泵流量 可达250μl/min能开动 汽车, 在磁场 中飞
行的机器蝴蝶,以及集微型速度计、 微型陀 螺和信 号处理 系统为 一体的 微型惯 性组合( MIMU) 。德国 创造了 LIGA工艺, 制成了 悬臂
要技术领域与其他国家的竞争中走在 前面", 建议中 央财政 预支费 用为五 年5000万美元 ,得到 美国领 导机构 重视, 连续大 力投资
,并把航空航天、信息和MEMS作为 科技发 展的三 大重点 。美国 宇航局 投资1亿 美元着 手研制 "发现 号微型 卫星", 美国国 家科学 基
金会把MEMS作为一个新崛起的研究 领域制 定了资 助微型 电子机 械系统 的研究 的计划 ,从1998年开 始,资 助MIT ,加州 大学等8所大
床(Grinding Machine)、冲压机、压铸机机等专用机 械设备 制作零 件的过 程。 编辑本段微型机械加工技术的国外发 展现状
机械产品 1959年,Richard P Feynman(1965年诺贝尔 物理奖 获得者) 就提出 了微型 机械的 设想。 1962年 第一个 硅微型 压力传 感器问 世,其
理和方法组织生产和指导生产,将生 产过程 看成是 一个具 有输入 和输出 的生产 系统。 能使企 业的管 理科学 化,使 企业更 具应变 力

数控分频器实验报告

数控分频器实验报告

数控分频器实验报告数控分频器实验报告引言:数控分频器是一种用于控制电机转速的设备,它可以根据输入的指令来调节电机的转速,广泛应用于工业生产中。

本实验旨在通过搭建数控分频器电路并进行实际操作,探究其原理和工作方式。

一、实验目的本实验的主要目的是了解数控分频器的基本原理,掌握其正确的使用方法,通过实际操作加深对其工作原理的理解。

二、实验原理数控分频器是通过将输入的脉冲信号进行分频来控制电机转速的。

其工作原理主要包括以下几个方面:1. 输入信号:数控分频器的输入信号一般为脉冲信号,其频率和占空比可以通过外部设备调节。

2. 分频电路:数控分频器内部的分频电路可以将输入信号进行分频,将高频的输入信号转换为低频的输出信号。

3. 控制电路:数控分频器的控制电路可以根据输入的指令来调节输出信号的频率和占空比,从而控制电机的转速。

三、实验步骤1. 搭建电路:根据实验指导书上的电路图,连接数控分频器和电机,确保电路连接正确。

2. 设置参数:根据实验要求,设置输入信号的频率和占空比,以及输出信号的频率和占空比。

3. 运行实验:按下启动按钮,观察电机的转速变化,并记录相关数据。

四、实验结果在实验过程中,我们通过调节输入信号的频率和占空比,以及输出信号的频率和占空比,成功控制了电机的转速。

通过实验数据的记录和分析,我们发现输入信号的频率越高,电机的转速越快;而输入信号的占空比则会影响电机的平均转速。

五、实验总结通过本次实验,我们深入了解了数控分频器的工作原理和使用方法。

数控分频器作为一种重要的工业控制设备,可以灵活地控制电机的转速,提高生产效率。

在实际应用中,我们需要根据具体的需求来设置输入信号和输出信号的参数,以达到最佳的控制效果。

总之,数控分频器是一种非常实用的设备,在工业生产中起到了重要的作用。

通过本次实验,我们对其工作原理有了更深入的了解,并学会了正确使用方法。

希望今后能够通过实际应用,将数控分频器的优势发挥到极致,为工业生产的发展做出贡献。

占空比为50%的数控分频器设计及实现

占空比为50%的数控分频器设计及实现
作 者 简介 : 尚 中( 9 3 ) 男 , 南商 水 人 , 士 , 究 发 徐 17一 , 河 硕 研 P A
输 出的信号通过或 门输 出最终 的分频输 出信号
现代计算机
2 1 .6 0 10
ek p = O ; l u < '
明 , 计 方 案 是 可 行 的 , 有 很 强 的 实 用价 值 。 设 具
关 键 词 :数 控 分频 ;VHDL;F GA;仿 真 P
0 引 言
在 数 字 逻 辑 系统 设 计 中 . 频 器 是 一 种 最 基本 的 分
为输入时钟信号 , N计数器从零开 始计 数 , 模 当 计数器 的值计 到 N 1 .输出会产生一个高 电平脉 冲 一 时 信号, 计数 器的值 同时变 为零 。 开始 下一轮 的计数 . 以 此类推 .便会在输 出端得到一个分频 系数 为 N的分频
_
2 数 控 分 频 器 的设 计 与 实 现
在 现 代 电 子 系 统 的 设 计 中 . H L已 经 越 来 越 多 V D
t< ,"dt( c no1 得 到 的 , 当 于 实 现 了一 次 s = 0& a 3d ̄ t ) a 相
逻辑 右移 ( 2 操作 。 s为异步复位信 号 , rt … 除 ) rt 当 s为 0’ 时 , 出为“ ” a 输 0 。dt a为分 频系数 , 用四位二进制位来表 示 , 分频 系数的表示范围是 0 0 ~ 1 l 故 00 11。
里 , 频 输 出 为低 电平 , 计 数 器 的 后 一 半 时 间 里 。 分 在 分
1 数 控 分 频 器 的 原 理 分 析
数控分频器的功能是当在输入端 给定不 同的输入 数据时 , 将对输入的时钟信号有不同的分频比 . 它是在

实验4 数控分频器的设计

实验4 数控分频器的设计

(6)实验附加内容:将例1扩展成16位分频器, 并提出此项设计的数项实用示例,如PWM的设计 等。 (7)思考题:怎样利用2个例1给出的模块设计 一个电路,使其输出方波的正负脉宽的宽度分 别由两个8位输入数据控制? ( 8 )实验报告:根据以上的要求,将实验项目 分析设计,仿真和测试写入实验报告。
(3)实验内容1:按照如图电路原理图,完成电 路元件之间与输出、输入之间的连接,最后将设计 好的数控分频器以 PULSE.GDF 为图形文件名保存 ,并编译。
图1 当给出不同输入值D时,FOUT输出不同 频率(CLK周期=50ns) ( 4 )实验内容 2 :根据下图 2 的波形提示,分析 例 1程序中的各语句功能、设计原理、逻辑功能, 并详述进程P_REG和P_DIV的作用。
实 验 五 数控分频器的设计
(1)实验目的:学习数控分频器的设计、分析和 测试方法。 (2)实验原理:数控分频器的功能就是当在输入 端给定不同输入数据时,将对输入的时钟信号有不 同的分频比,数控分频器就是用计数值可并行预置 的加法计数器设计完成的,方法是将计数溢出位与 预置数加载输入信号相接即可。
(3)实验内容1:原理图设计输入:在原理图编 辑窗口,调入数控分频器电路设计所需要的 2个带 预置功能的 4 位二进制计数器 74161 , NAND8 ( 8 输入与非门)和1个TFF。
BEGIN IF CLK'EVENT AND CLK = '1' THEN IF CNT8 = "11111111" THEN CNT8 := D; --当CNT8计数计满时,输入数 据D被同步预置给计数器CNT8 FULL <= '1'; --同时使溢出标志信号FULL输出为高电平 ELSE CNT8 := CNT8 + 1; --否则继续作加1计数 FULL <= '0'; --且输出溢出标志信号FULL为低电平 END IF; END IF; END PROCESS P_REG ;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字起航—数控分频器零基础电子设计系列课程主讲人:范秋华国家级电工电子实验教学中心(青岛大学)4.4.5 数控分频器定义实现分频值与计数初值、计数器模的关系举例数控分频器数控分频器就是当在输入端给定不同输入数据时,将对输入的时钟信号clk进行相应的分频输出clkout。

10.Architecture a of fdiv is11.signal cnt: integer range 0 to n;12.signal temp: std_logic;13.Begin14.process (clk)15.begin16.if (clk'event and clk='1') then17.if(cnt<n ) then cnt<= cnt+1; temp <= ‘0’;18.else cnt<= 0; temp=‘1’;19.end if; end if;20.end process;21.clkout<= temp;22.End a;case keys7 iswhen "0000001" => if (clk'event and clk='1') thenif count <"11111111111111110" then count:=count + 1; fullspks<= '0'; else fullspks<='1'; count:=0; end if;end if; --1when "0000010" => if (clk'event and clk='1') thenif count <"11111111111111100" then count:=count + 1;fullspks <= '0'; else fullspks<='1'; count:=0; end if;end if; --2when "0000100" => if (clk'event and clk='1') thenif count <"11111111111111000" then count:=count + 1;fullspks <= '0'; else fullspks<='1'; count:=0; end if;end if; --3when "0001000" => if (clk'event and clk='1') thenif count <"1111111111110000" then count:=count + 1;fullspks <= '0'; else fullspks<='1'; count:=0; end if;end if; --4when "0010000" =>if (clk'event and clk='1') thenif count <"1111111111110000" then count:=count + 1; fullspks<= '0'; else fullspks<='1'; count:=0; end if;end if; --5when "0100000" =>if (clk'event and clk='1') thenif count <"1111111111100000" then count:=count + 1; fullspks<= '0'; else fullspks<='1'; count:=0; end if;end if; --6when others => null;end case;end process;process (keys7,clk)Variable count: integer range 0 to 20;beginif (clk'event and clk='1') thencase keys7 iswhen "0000001" => if count <4 then count:=count + 1; fullspks<= '0'; else fullspks<='1'; count:=0;end if; --1when "0000010" => if count <6 then count:=count + 1;fullspks <= '0'; else fullspks<='1'; count:=0;end if; --2when "0000100" => if count <8 then count:=count + 1;fullspks <= '0'; else fullspks<='1'; count:=0;end if; --3when "0001000" => if count <10 then count:=count + 1;fullspks <= '0'; else fullspks<='1'; count:=0;end if; --4when "0010000" =>if count <12 then count:=count + 1; fullspks<= '0'; else fullspks<='1'; count:=0;end if; --5when "0100000" =>if count <14 then count:=count + 1; fullspks<= '0'; else fullspks<='1'; count:=0;end if; --6when others => null;end case; end if;End process;国家级电工电子实验教学中心数字启航数控分频器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity shufen isport ( clk : in std_logic ; --时钟Tone : in std_logic_vector (12 downto 0 ); clkout : out std_logic);end shufen;architecture Behavior of shufen issignal fullspks : std_logic ;begin p1: process ( clk ,Tone)variable count12 : std_logic_vector( 12 downto 0 ) ;beginif (clk 'event and clk='1') thenif count12 <"1111111111111" thencount12:=count12 + 1; fullspks <= '0'; else fullspks <='1'; count12 := Tone;end if;end if;end process;Clkout<=fullspks;end ;p1: process ( clk,Tone)variable count10 : integer ( 99 downto0 ) ; beginif (clk'event and clk='1') thenif count10 < 99 thencount10:=count10 + 1; fullspks<= '0';else fullspks<='1'; count10 := Tone;end if;end if;end process;Clkout<=fullspks;end;注意分频值与计数初值、计数器模的关系计数器模:100分频值:10计数初值:90p1: process ( clk,Tone)variable count10 : std_logic_vector( 9downto0 ) ; beginif (clk'event and clk='1') thenif count10 <"1111111111" thencount10:=count10 + 1; fullspks<= '0';else fullspks<='1'; count10 := Tone;end if;end if;end process;Clkout<=fullspks;end;再见!。

相关文档
最新文档