文档库 最新最全的文档下载
当前位置:文档库 › 数控分频器的VHDL设计

数控分频器的VHDL设计

数控分频器的VHDL设计
数控分频器的VHDL设计

实验六数控分频器的VHDL设计

实验目的:学习数控分频器的设计、分析和测试方法。

实验项目分析设计:

数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比。其原理是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可。

实验内容1:用VHDL语言设计一个8位数控分频器。

要求:在QuartusⅡ上进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。引脚锁定以及硬件下载测试,选择目标器件EP1C3,建议选实验电路模式No.0。用键1、键2作为置数数据D的输入端,CLK接clock0,FOUT接至扬声器Speaker。(时序仿真时CLK周期设5ns~10ns,D分别设33H, FEH)

所编写的源程序如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY DVF IS

PORT( CLK : IN STD_lOGIC;

D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

FOUT : OUT STD_LOGIC);

END ENTITY DVF;

ARCHITECTURE ONE OF DVF IS

SIGNAL FULL: STD_LOGIC;

BEGIN

P_REG: PROCESS(CLK)

VARIABLE CNT8: STD_LOGIC_VECTOR(7 DOWNTO 0);

BEGIN

IF CLK'EVENT AND CLK='1' THEN

IF CNT8="11111111" THEN

CNT8:=D;

FULL<='1';

ELSE CNT8:=CNT8+1;

FULL<='0';

END IF;

END IF;

END PROCESS P_REG;

P_DIV: PROCESS(FULL)

VARIABLE CNT2: STD_LOGIC;

BEGIN

IF FULL'EVENT AND FULL='1' THEN

CNT2:= NOT CNT2;

IF CNT2='1' THEN FOUT<='1';

ELSE FOUT<='0';

END IF;

END IF;

END PROCESS P_DIV;

END ARCHITECTURE ONE;

仿真波形如下所示:

经过硬件测试后,输入与输出满足题目要求和仿真结果。

实验内容2:将8位数控分频器扩展为16位数控分频器。

所编写的源程序如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY RXL IS

PORT( CLK : IN STD_lOGIC;

D : IN STD_LOGIC_VECTOR(15 DOWNTO 0);

FOUT : OUT STD_LOGIC);

END ENTITY RXL;

ARCHITECTURE ONE OF RXL IS

SIGNAL FULL: STD_LOGIC;

BEGIN

P_REG: PROCESS(CLK)

VARIABLE CNT8: STD_LOGIC_VECTOR(15 DOWNTO 0);

BEGIN

IF CLK'EVENT AND CLK='1' THEN

IF CNT8="1111111111111111" THEN

CNT8:=D;

FULL<='1';

ELSE CNT8:=CNT8+1;

FULL<='0';

END IF;

END IF;

END PROCESS P_REG;

P_DIV: PROCESS(FULL)

VARIABLE CNT2: STD_LOGIC;

BEGIN

IF FULL'EVENT AND FULL='1' THEN

CNT2:= NOT CNT2;

IF CNT2='1' THEN FOUT<='1';

ELSE FOUT<='0';

END IF;

END IF;

END PROCESS P_DIV;

END ARCHITECTURE ONE;

仿真波形如下所示:

经过硬件测试后,输入与输出满足题目要求和仿真结果。

实验感想:

EDA乐曲硬件演奏电路设计 课程设计

摘要 乐曲演奏广泛用于自动答录装置、手机铃声、集团电话、及智能仪器仪表设备。实现方法有许多种,随着FPGA集成度的提高,价格下降,EDA设计工具更新换代,功能日益普及与流行,使这种方案的应用越来越多。如今的数字逻辑设计者面临日益缩短的上市时间的压力,不得不进行上万门的设计,同时设计者不允许以牺牲硅的效率达到保持结构的独特性。使用现今的EDA软件工具来应付这些问题,并不是一件简单的事情。FPGA预装了很多已构造好的参数化库单元LPM 器件。通过引入支持LPM的EDA软件工具,设计者可以设计出结构独立而且硅片的使用效率非常高的产品。 本课设在EDA开发平台上利用VHDL语言设计数控分频器电路,利用数控分频的原理设计乐曲硬件演奏电路,并定制LPM-ROM存储音乐数据,以“两只老虎”乐曲为例,将音乐数据存储到LPM-ROM,就达到了以纯硬件的手段来实现乐曲的演奏效果。只要修改LPM-ROM所存储的音乐数据,将其换成其他乐曲的音乐数据,再重新定制LPM-ROM,连接到程序中就可以实现其它乐曲的演奏。 关键词:FPGA;EDA;VHDL;音乐

目录 设计要求 (1) 1、方案论证与对比 (1) 1.1方案一 (1) 1.2方案二 (1) 1.3综合对比 (1) 2 乐曲演奏电路原理 (2) 2.1 音乐演奏电路原理 (2) 2.2 音符频率的获得 (2) 2.3 乐曲节奏的控制 (3) 2.4 乐谱发生器 (3) 2.5 乐曲演奏电路原理框图 (3) 3音乐硬件演奏电路的设计实现 (4) 3.1 地址发生器模块 (4) 3.1.1 地址发生器的VHDL设计 (4) 3.2 分频预置数模块 (6) 3.2.1 分频预置数模块的VHDL设计 (6) 3.3 数控分频模块 (8) 3.3.1 数控分频模块的VHDL设计 (8) 3.4 music模块 (10) 3.4.1 音符数据文件 (10) 3.5.2 LPM-ROM定制 (12) 3.6 顶层文件 (14) 4 时序仿真及下载调试过程 (16) 4.1 时序仿真图 (16) 4.2 引脚锁定以及下载 (17) 4.3调试过程及结果 (17) 5扩大乐曲硬件演奏电路的通用性 (18) 5.1 完善分频预置数模块的功能 (18) 设计总结与心得体会 (21) 参考文献 (22)

分频器设计实验报告

竭诚为您提供优质文档/双击可除分频器设计实验报告 篇一:n分频器分析与设计 一、实验目的 掌握74190/74191计数器的功能,设计可编程计数器和n分频器,设计(n-1/2)计数器、分频器。 二、实验原理 分频是对输入信号频率分频。1、cD4017逻辑功能 2、74190/74191逻辑功能 3、集成计数器级联 当所需计数器模数超过所选计数器最大计数状态时,需要采取多片计数器级联。方法分为异步级联和同步级联。4、集成计数器的编程 在集成计数器的时序基础上,外加逻辑门电路等,反馈集成计数器的附加功能端,达到改变计数器时序的目的。可采用复位编程和置数编程两种。5、多片74190/74191计数器级联 可根据具体计数需求和增减需求,选用74190或74191,

选择不同功能、同步或异步设计等。 6、74190/74191计数器编程 由于没有复位端,因此只能使用置数编程,置数端置为0即可异步置数。可根据需求设计n进制加法或减法计数器。 n与译码逻辑功能如下。 7、74191组成(n-1/2)分频器电路如下图: u3 计数器的两个循环中,一个循环在cp的上升沿翻转;另一个是在cp的下降沿翻转,使计数器的进制减少1/2,达到(n-1/2)分频。 三、实验仪器 1、直流稳压电源1台 2、信号发生器1台 3、数字万用表1台 4、实验箱1台 5、示波器1台 四、仿真过程 1、按照cD4017和74191功能表验证其功能。 2、74191组成可编程计数器 (1)构成8421bcD十进制加法计数器,通过实验验证正确性,列出时序表。设计图如下 仿真波形如下 (2)构成8421bcD十进制减法计数器,通过实验验证正确性,列出时序表。设计图如下: 仿真波形如下

基于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;选择个位数码管亮。 当sel=1时,q=11111101;选择十位数码管亮。 当sel=2时,q=11111011;选择百位数码管亮。 5、7段数码管显示译码器:把BCD码表示的十进制数转换成驱动数码管显示的段信号,使数码管显示数字。 三、选择器件 1、装有QuartusII软件的计算机一台。 2、芯片:使用altera公司生产的Cyclone系列芯片,如EP1C12Q240C8芯片 。 此次设计实验采用ALTERA公司的cyclone系列的FPGA芯片EP1C12,设计和仿真采用ALTERA公司的QUARTUS II软件,EP1C12各项参数参照上表。 Cyclone的性能特性 (1)、新的可编程体系结构,实现低成本设计。

数控分频器实验报告

《数控分频实验》 姓名:谭国榕班级:12电子卓越班学号:201241301132 一、实验目的 1.熟练编程VHDL语言程序。 2.设计一个数控分频器。 二、实验原理 本次实验我是采用书上的5分频电路进行修改,通过观察其5分频的规律进而修改成任意奇数分频,再在任意奇数分频的基础上修改为任意偶数分频,本次实验我分为了三个部分,前两部分就是前面所说的任意奇数分频和任意偶数分频,在这个基础上,再用奇数输入的最低位为1,偶数最低位为0的原理实现合并。 三、实验步骤 1.任意奇数分频 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY DIV1 IS PORT(CLK:IN STD_LOGIC; D:IN INTEGER RANGE 0 TO 255; K1,K2,K_OR:OUT STD_LOGIC ); END; ARCHITECTURE BHV OF DIV1 IS SIGNAL TEMP3,TEMP4:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL M1,M2:STD_LOGIC; --SIGNAL OUT1,OUT2,OUT3:STD_LOGIC; BEGIN PROCESS(CLK,TEMP3) BEGIN IF RISING_EDGE(CLK) THEN IF(TEMP3=D-1) THEN TEMP3<="00000000"; ELSE TEMP3<=TEMP3+1; END IF; IF(TEMP3=D-(D+3)/2) THEN M1<=NOT M1; ELSIF (TEMP3=D-2) THEN M1<=NOT M1; END IF; END IF; END PROCESS; PROCESS(CLK,TEMP4) BEGIN IF FALLING_EDGE(CLK) THEN IF(TEMP4=D-1) THEN TEMP4<="00000000"; ELSE TEMP4<=TEMP4+1; END IF; IF(TEMP4=D-(D+3)/2) THEN M2<=NOT M2; ELSIF (TEMP4=D-2) THEN M2<=NOT M2;

实验五 数控分频器

实验五数控分频器 一、实验目的 1、学会数控分频器的设计、分析和测试方法; 2、根据仿真结果分析设计的优缺点。 二、实验原理 数控分频器的功能就是当输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DIV IS PORT(CLK:IN STD_LOGIC; K_OR:OUT STD_LOGIC); END ENTITY DIV; ARCHITECTURE BHV OF DIV IS SIGNAL C1,C2:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL M1,M2:STD_LOGIC; BEGIN PROCESS(CLK,C1) BEGIN IF RISING_EDGE(CLK) THEN IF (C1="100") THEN C1<="000";ELSE C1<=C1+1;END IF; IF (C1="001") THEN M1<=NOT M1;ELSIF C1="011" THEN M1<=NOT M1; END IF; END IF; END PROCESS ; PROCESS(CLK,C2) BEGIN IF FALLING_EDGE(CLK) THEN IF (C2="100") THEN C2<="000";ELSE C2<=C2+1;END IF; IF (C2="001") THEN M2<=NOT M2;ELSIF C2="011" THEN M2<=NOT M2;

EDA数控分频器的设计报告

数控分频器的设计 1、实验目的: 学习数控分频器的设计、分析和测试方法。 2、实验原理: 数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可,详细设计程序如例下文所示。 1) VHDL及语句分析 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DVF IS --定义实体DVF PORT ( CLK : IN STD_LOGIC; --时钟输入 D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); --7位预置数 FOUT : OUT STD_LOGIC ); --输出的频率 END DVF; ARCHITECTURE one OF DVF IS --定义结构体one SIGNAL FULL : STD_LOGIC; --定义信号full BEGIN P_REG: PROCESS(CLK) --进程P_REG中CNT8从预置数D开始 逐步累加到255后,FULL置1;再将 CNT8置为D,循环以获得一个新的周期 脉冲序列FULL,即产生新的频率V ARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF CLK'EVENT AND CLK = '1' THEN IF CNT8 = "11111111" THEN CNT8 := D; FULL<='1'; ELSE CNT8 := CNT8 + 1; FULL <= '0'; END IF; END IF; END PROCESS P_REG ; P_DIV: PROCESS(FULL) --进程P_DIV中,FOUT是占空比为50%的周期

EDA简易电子琴设计报告

,、题目分析 1、分析要求,确定总体方框图 本设计基本部分是用VHDL语言设计一个简易的八音符电子琴,在Quartus II 平台下下载到Cyclone系列的EP1C12Q240C芯片中,该电路设计能够实现DO RE Ml、FA等八个音调的电子琴,发挥部分是设计一乐曲自动演奏器,用户自己编制乐曲存入电子琴,电子琴可以完成自动演奏。 电子琴音乐产生原理及硬件设计由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了。 根据系统设计要求,系统设计采用自顶向下的设计方法,系统的整体组装设计原理图如图1所示,它由乐曲自动演奏模块AUTO音调发生模块TONE和数控分频模块FENPIN三部分组成。 图1系统的整体组装设计原理图 2、最终完成的技能指标 (1)设计一个简易的八音符电子琴,它可通过按键输入来控制音响。 (2)演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存入的乐曲 】、选择方案 通过可编程逻辑器件(PLD和VHDL硬件描述引言来实现电子琴的基本部分和发挥部分的设计。对于基本部分,设计的主体是数控分频器,对输入的频率进行分频,得

到各个音阶对应的频率最为输出。当按下不同的键时发出不同的声音。对于发挥部分,则在原设计的基础上,增加一个乐曲存储模块,代替了键盘输入,产生节拍控制(index数据存留时间)和音阶选择信号,即在此模块中可存放一一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。 方案一:由单片机来完成设计。可用单片机控制键盘的输入,以及产生相应的频率信号作为输出。目前,单片机的功能已比较强大,集成度日益增高且其设计和控制比较容易。但是由于在传统的单片机设计系统中必须使用许多分立元件组成单片机的外围电路,如锁存器,译码器等都需要单独的电路,因此整个系统显得十分复杂,抗干扰性差,在运行过程中容易死机或进入死循环,可靠性降低,而功耗费用增高。 方案二:利用PLC来完成设计。目前利用PLC的技术已经比较成熟。PLC有其优点,其性能优异,体积小,可靠性和精度都比较好,在电子琴的设计中可 采用PLC来完成硬件的控制,但是用PLC实现编程相对比较复杂,对于电子琴这种小型设计来说成本过高。 方案三:利用可编程逻辑器件PLD来完成该设计。利用PLD可以很好的解决上述的问题。它的成品体积小,适合电子琴这种小型设计。其性能稳定,控制精度高(Xili nx公司的高密度,高速可预测延时,高性能系列芯片),易于管理和屏蔽,抗干扰能力强,可靠性高。 综上,在本设计中选择第三种方案最优。 三、各模块原理及其程序 1、乐曲自动演奏模块 乐曲自动演奏模块(AUTO.VHD的作用是产生8位发声控制输入信号/当进行自动演奏时,由存储在此模块中的8位二进制数作为发声控制输入,从而自动演奏乐曲。 为了实现扩展部分的设计,便需要多加上一个音乐存储模块,该模块的作用是产生8位发声控制输入index,auto为0或1时可以选择自动演奏或者键盘输入,如果auto为0,则而由存储在此模块中的8位二进制数来作为发声控制输入,由此便可自动演奏乐曲。此模块的VHDL语言中包括两个进程,首先是对基准脉冲进行分频得到4Hz 的脉冲,作为第二个进程的时钟信号,它的目的是控制每个音阶之间的停顿时间,此处便是1/4=0.25s,第二个进程是音乐的存储,可根据需要编写不同的乐曲。 这段模块的原理图如图2所示: CLK AUTO INDEX0[7.0] 图2乐曲自动演奏模块原理图 乐曲自动演奏模块可以由VHDL语言来实现,下面是一段主要代码:

实验八 数控分频器的设计

实验八数控分频器的设计 1、实验目的 1 学习数控分频器的设计; 2 熟悉VHDL常用语句的意义和使用; 3 练习引脚分配和时序分析。 2、实验内容 1 设计8位数控分频器; 三、实验原理 对于一个N分频器,分频出的时钟周期原时钟周期的N倍,频率是原时钟频率的1/N。 对于一个8位计数器,如果开始预置一个数D,然后启动计数器工作,则经过11111111-D个时钟周期计数器的值又变为11111111,当计数器为该数值时,下一个时钟沿到来之时,又将计数器预置为D,然后开始正常计数。如此通过计数、预置的周期性操作,可以得到一个周期信号(即分频信号),其周期为11111111-D+1,即分频比为R= 11111111-D+1。所以改变D,则可以控制分频比。 数控分频器的VHDL代码见教材P146-147。仿真波形如图8-1所示。 图8-1 数控分频器仿真波形

图8-2 数控分频器芯片引脚分配 三、实验步骤 (一)8位数控分频器的设计 1 建立一个设计工程,工程名为PULSE; 2 打开文本编辑器,建立一个VHDL设计文件,其VHDL代码见教材 P166例6-22,文件名存为PULSE.VHD。注意文件的扩展名要选 为.vhd,而且要求工程名、文件名和设计实体名必须相同。 3 选器件:将器件型号选为; 4 编译; 5 建立波形文件,然后保存,其文件名必须与工程名一致;【波形

设置:①设置仿真时间为500us:②设置输入信号的波形:时钟周期设置为50ns,其他输入信号的波形设置参看图8-1。】 6 仿真,观察输出波形是否正确【参看图8-1中的输出波形】。 7 引脚分配;【将引脚分配到如图8-2所示的位置,然后再编译。 编译通过才算成功】 8 时序分析:分析芯片所能达到的最高时钟频率。【打开时序分析器,然后执行菜单命令:analysis/register performance /start】 五、思考题 1 按本实验所示的方法进行分频,输出的分频信号FULL和FOUT是奇数分频还是偶数分频?分别说明之。 2 将本实验的8位数控分频器扩展为16位分频器; 3 在本实验的设计基础上,如果设置2个预置数D和D1,则可以控制输出信号FULL的占空比,使时钟信号变得比较均匀。试在原来的VHDL 代码基础上进行改进,使用D和D1来控制FULL信号的占空比。 4 设计一个5分频器,使其分频时钟的占空比位3/5,写出VHDL设计代码。 【提示:对于一个5分频器的设计,可以先设计一个4位5进制计数器,则计数器的值在0,1,2,3,4上周期性循环。设计方法是:当计数器为4时,如果下一个时钟沿到来则将计数器置0,然后开始正常计数。另外定义一个分频信号CLK_DIV5,当计数器值为0,1,2时,使CLK_DIV5=1,当计数器值为3,4时,使CLK_DIV5=0,则CLK_DIV5为5分频信号,其占空比为3/5。】

数控分频器的设计

实验四数控分频器的设计 一、实验目的: 1.学习数控分频器的设计、分析和测试方法,锻炼分析Verilog(VHDL)语言的能力。 二、原理说明: 数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,对原时钟进行占空比为50%的分频。在实验板选择50M 时钟,对其进行2~15分频,分频系数以拨码键盘控制,并用数码管进行显示(十六进制形式)。 三、实验内容: 1、根据由顶向下的设计原则,进行顶层建模。 分频系数分为奇数分频和偶数分频,因些包括Evn_Div(偶数分频)和Odd_Div(奇数分频)模块,数码管显示为SEG7_LUT,采用类似查找表的方式完成。 2、偶数分频 偶数分频模块比较简单,假设分频系数为N,只需要在计数器计到N/2时,将输出时钟反转即可。

仿真图如下: 3、奇数分频 奇数分频相对偶数分频比较麻烦,主要是对原时钟的上升沿和下降沿进行计数,通过两个计数器得到上升沿时钟和下降沿时钟,对这两个时钟进行与操作可得到奇数分频。

仿真图如下: 4、数码管显示 数码管显示模块应用case语句即可完成。

5、分频选择 分频系数有两种,一是偶数,另一个是奇数,因此可通过分频系数的最低位来进行选择,iDIV[0]既作为奇、偶分频模块的使能输入,又可作为输出时钟选择线。 6、顶层模块 将上述几个模块例化即可(注意iDiv[0]的连接方式)。 引脚: input CLOCK_50;//原时钟 input RST;//复位信号 input [3:0] iDIV;//分频系数 output oCLK;//输出时钟 output [6:0] oSEG;//数码管输出

EDA分频器的设计

EDA实验报告 学院:班级: 学号:指导老师: 姓名: 一、实验目的:学习数控分频器的设计,分析和测试方法。 二、实验原理:不同的分频比,数控分频器就是用计数值可并行预置的加法 计数器设计完成的,方法是将数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有计时器溢出位与预置数加载输入信号相接即可。 三、实验内容 1、将4096HZ的时钟信号分频为1HZ的时钟信号。 实验原理图: 实验源程序: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity dvf is port(clk_in:in std_logic; fout:out std_logic); end; architecture one of dvf is signal cnt: integer range 0 to 2048; signal clk_out:std_logic; begin process(clk_in) begin if clk_in'event and clk_in = '1' then if cnt=2048 then cnt <=0; clk_out <=not clk_out; else cnt<=cnt+1; end if;

end if; end process; fout<=clk_out; end one; 功能仿真波形图: 实验引脚图: 实验箱上工作情况:当CLOCK5接4096HZ的时钟信号时,扬声器每秒钟响一次。 2、如实验内容1将4096HZ的时钟信号分频为2HZ、8HZ、16HZ的时钟信号。 3、编写四选一MUX,可用按键控制选择分频后的某时钟。 实验原理图: 实验源程序: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity dvf is port(clk:in std_logic;

数控分频器的设计

数控分频器的设计 一、实验目的: 学习数控分频器的设计和测试方法。 二、实验原理: 数控分频器的功能为在不同输入信号时,对时钟信号进行不同的分频,在输出端输出不同频率的信号。该电路可以用具有并行预置功能的加法计数器实现,方法是对应不同的输入信号,预置数(初始计数值)设定不同的值,计数器以此预置数为初始状态进行不同模值的计数,当计数器的状态全为1时,计数器输出溢出信号。用计数器的溢出信号作为输出信号或输出信号的控制值,使输出信号的频率受控于输入的预置数。 电路输出波形图: 三、实验内容: 1)根据实验原理画出电路框图,并计算在不同预置数时输出信号的频率与时钟频率的比值。 ------------------------------------------------------------------------------------------------------------- 原理图:

数控分频器输出频率与输入时钟的关系: 当输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比。 任意小数都可以表示成a n b +形式,其中a

EDA 数控分频器的设计

专业班级: 学号:姓名: EDA 技术实验报告 实验项目名称:数控分频器的设计 实验日期:2012.06.11 实验成绩: 实验评定标准: 一、实验目的 学习数控分频器的设计、分析和测试方法。 二、实验原理 数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预置的加法器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可。 三、实验器材 PC机、FPGA实验箱、QuartusⅡ软件 四、实验内容: 编写数控分频器的程序,完成之后在实验系统上硬件验证其程序的功能。可选实验电路模式一;键2和键1负责输入8位顶置数D;CLK由clock0输入,频率选65536HZ或更高;输出FOUT接扬声器。编译下载后进行硬件测试;改变键2或键1的输入值,可听到不同的音调的声音。 五、实验程序 library ieee; use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all; entity DVF is port (clk:in std_logic; d:in std_logic_vector(7 downto 0); fout:out std_logic); end DVF; architecture one of DVF is signal full:std_logic; begin p_reg:process(clk) variable cnt8 :std_logic_vector(7 downto 0); begin if clk'event and clk='1' then if cnt8="11111111" then cnt8:=D; full<='1'; else cnt8:=cnt8 +1; full<='0'; end if; end if; end process p_reg; p_div:process(full) variable cnt2:std_logic; begin if full'event and full='1' then cnt2:=not cnt2; if cnt2='1' then fout<='1';else fout<='0'; end if; end if; end process p_div; end one; 六、实验仿真、结果及分析 <一>实验仿真: 根据以上程序可知,给定预置值的波形如下:

EDA简易电子琴设计

合肥工业大学电子科学与技术专业《集成电路课程设计》 简易电子琴设计

一、 实验目的 使用VerilogHDL 语言进行前端设计,并使用Quaruts 软件在 GW48-PK2实验上实现仿真,实现硬件电子琴。电子琴要求有8个音阶,使用外部时钟信号3MHz ,能同步显示音阶。 二、设计要求 1、 设计一个简易电子琴。要求能演奏的音域为D 调的do 到E 调do 。 2、 用GW48-PK2中的8个按键作为琴键。 3、 GW48-PK2中有蜂鸣器。 4、 可以使用GW48-PK2上的12MHz 作为输入时钟信号 三、设计思路 通过可编程逻辑器件(PLD )和VHDL 硬件描述语言来实现电子 琴的基本要求。 设计的主体是数控分频器,对输入的频率按照与每个音阶对应的分频系数进行分频,得到各个音阶对应的频率分别在蜂鸣器和数码管上以声音和频率数值的形式作为输出。 四、设计组成与原理 下图为系统的工作原理框图。 分频置 数 按 键 分 频 器 12MHZ 蜂 鸣 器 数码管显示

五、模块设计 1.音名与频率的关系 音乐的12平均率规定:每2个八度音(如简谱中的中音1与 高音1)之间的频率相差1倍。在2个八度音之间,又可分为 12个半音。灵位,音符A(简谱中的低音6)的频率为440HZ, 音符B到C之间、E到F之间为半音,其余为全音。由此可以 计算出简谱中所有的音符的频率,在这我们只需计算出中音1 到高音1的频率即可。如下所示: 表一简谱音名与频率的对应关系 由于各音符对应的频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。若分频器时钟频率过低,则由于分频系数过小,四舍五入取整后的误差较大;若时钟频率过高,虽然误差变小,但分频数将变大。实际的设计应综合考虑两方面的因素,在尽量减少频率误差的前提下取合适的时钟频率。本实验要求用12MHZ的时钟脉冲信号,所以不必考虑这方面的因素。实际上,只要各个音符间的相对频率关系不变,弹奏出来的音调听起来是不会走调的。 2.分频系数与初始值(预置数)

数控分频器

数字起航—数控分频器零基础电子设计系列课程 主讲人:范秋华 国家级电工电子实验教学中心(青岛大学)

4.4.5 数控分频器 定义 实现 分频值与计数初值、计数器模的关系 举例

数控分频器 数控分频器就是当在输入端给定不同输入数据时,将对输入的时钟信号clk进行相应的分频输出clkout。

10.Architecture a of fdiv is 11.signal cnt: integer range 0 to n; 12.signal temp: std_logic; 13.Begin 14.process (clk) 15.begin 16.if (clk'event and clk='1') then 17.if(cnt

case keys7 is when "0000001" => if (clk'event and clk='1') then if count <"11111111111111110" then count:=count + 1; fullspks<= '0'; else fullspks<='1'; count:=0; end if;end if; --1 when "0000010" => if (clk'event and clk='1') then if count <"11111111111111100" then count:=count + 1;fullspks <= '0'; else fullspks<='1'; count:=0; end if;end if; --2 when "0000100" => if (clk'event and clk='1') then if count <"11111111111111000" then count:=count + 1;fullspks <= '0'; else fullspks<='1'; count:=0; end if;end if; --3 when "0001000" => if (clk'event and clk='1') then if count <"1111111111110000" then count:=count + 1;fullspks <= '0'; else fullspks<='1'; count:=0; end if;end if; --4 when "0010000" =>if (clk'event and clk='1') then if count <"1111111111110000" then count:=count + 1; fullspks<= '0'; else fullspks<='1'; count:=0; end if;end if; --5 when "0100000" =>if (clk'event and clk='1') then if count <"1111111111100000" then count:=count + 1; fullspks<= '0'; else fullspks<='1'; count:=0; end if;end if; --6 when others => null; end case;end process;

EDA实验数控分频器的设计

***大学本科实验报告(2011-2012学年下学期) 课程名称:EDA 任课教员: 系: 专业: 二0一一年十月八日 《EDA》课程实验报告 实验项目名称:数控分频器的设计 系::专业:指导教员: 姓名:学号:成绩: 同组姓名:

实验地点:实验室实验日期: 数控分频器的设计一、实验目的和要求 学习数控分频器的设计、分析和测试方法。 二、实验内容和原理 1、实验内容:

a)分析程序一中的各语句功能、设计原理及逻辑功能,详述进程 P_REG和P_DIV的作用,并画出该程序的RTL电路图; b)仿真:输入不同的CLK频率和预置值D,给出如书图6-21的 时序波形。 c)将程序一扩展成16位分频器; d)利用两个程序一给出的模块设计一个电路,使其输出方波的正 负脉宽的宽度分别由两个8位输入数据控制。 2、实验原理: 数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可,详细设计程序如程序一。 三、实验环境 QuartⅡ软件 四、操作方法与实验步骤 1、在QuartⅡ中建立工程,进行程序编写、调试、编译、仿真,设置CLK频率和D为不同值; 2、分析程序一,类推出16位分频器的设计方法; 3、仔细分析程序一中如何控制正负脉宽的宽度,采用元件例化语句,将DVF和SEL2两个VHDL设计实体组合起来,设计如题中要求的电路,具体程序见程序三,并按步骤1执行。 五、实验数据记录和处理

将程序进行仿真得到的波形图如下所示: (1)8位数控分频器 (2)16位数控分频器 (3)正负脉冲宽度可变分频器 六、实验结果与分析: 仿真结果基本正确,但在对16位数控分频器做仿真时应把endtime设置在ms级以上,即仿真时长要稍长些,才能出来明显结果。正负脉冲宽度可变分频器的正负脉冲宽度分别由D1和D2控制,其基本原理与8位数控分频器原理一致。 七、实验心得与体会 通过该实验,我掌握了数控分频器的工作原理及其设计方法,学会了元件例化语句的使用。 八、程序代码 程序一: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

实验八,用LPM设计可调的8位数控分频器和4位乘法器(1)

河南工业大学EDA技术实验报告 专业电科班级1304姓名学号201316030433 实验地点6316+ 6515 实验日期2015-11-13 成绩评定 一、实验项目 实验八用LPM设计可调的8位数控分频器和4位乘法器 二、实验目的 1.基于LPM_COUNTER的数控分频器设计:数控分频器的功能要求为:若在其输入端给予不同的数据,输出脉冲具有相应的对输入时钟的分频比。 2.基于LPM_ROM的4位乘法器的设计:硬件乘法器有多种实现方法,相比之下,由高速RAM构成的乘法表方式的乘法器的运算速度最快。本次实验就是利用原理图的绘制方法设计一个4位乘法器。 三、实验原理 LPM _ROM实验原理图如下:

LPM_ COUNTER实验原理图如下:

图3 ROM数据表 四、仿真结果及分析 LPM_COUNTER的数控分频器的仿真波形图如下:

基于LPM_ROM的4位乘法器的仿真波形如下: 由图可知,当输入为1和9的时候,输出为9;当输入为2和6时,输出为12,等等,则可知输出结果是正确的的,则仿真波形为正确的。 五、硬件验证过程及结果分析 对于LPM_COUNTER的数控分频器,首先按照原理图输入的设计步骤,通过元件 输入窗口在原理图编辑窗口中调用兆功能块,按照上面的原理图方式连接起来,其中

计数器LPM_COUNTER模块的参数设置可以自己设置,然后进行编译,仿真,这些都成功后就可以进行硬件验证了。引脚锁定仍然和以前一样,将输入输出引脚锁定到合适的位置,然后编译,下载。 这样就可以将编译好的程序下载到试验箱上步骤: 连接USB下载线,点击Tools选择Programmer.进入下载环境,在Hardware setup 选择USB,然后选择START 等待下载完成。 硬件验证:将十芯线一端插在之前锁定的q[0..7]引脚上,另一端插在24位输出显示HEX模块的数码管引脚上。将十芯线一端插在之前锁定的d[0..7]引脚上,另一端插在24位输出显示HEX模块的D0~D8引脚上。将clk的引脚连接到时钟信号上,udown、clken、clr分别连到开关输出端的引脚上,qout的引脚链接一个发光二极管。使clken、udown处于高电平,clr处于低电平,按 24位输出显示HEX模块的key键可以看到数码管相应的变化。从数码管上可以看到当数变到255时,发光二级管会闪一下 对于LPM_ROM的4位乘法器,首先也是按照原理图输入的设计步骤,通过元件输入窗口在原理图编辑窗口中调用兆功能块,按照上面的原理图方式连接起来,(需要注意的是,在原理图的绘制过程中,使用了信号标号和总线的表达方式),若要更改LPM_ROM的参数,可以自己更改。然后进行编译,仿真,仿真波形正确后就可以进行硬件验证了。引脚锁定仍然和以前的方法一样,将输入输出引脚锁定到合适的位置,然后下载。 这样就可以将编译好的程序下载到试验箱上步骤: 连接USB下载线,点击Tools选择Programmer.进入下载环境,在Hardware setup 选择USB,然后选择START 等待下载完成。 硬件验证:在连接时钟CLK之后,就可以通过数码管可以看到输出结果,通过观察输入与输出在同一时刻的数据,计算输入结果,和输出结果相比较就可以验证实验结果是正确的。 六、实验总结 本次实验最难的是LPM_ROM的4位乘法器的ROM表无法正确的分析,由于没

数控分频器的设计

数控分频器的设计 1、实验目的:学习数控分频器的设计、分析和测试方法。 2、实验内容:根据数控分频器的原理设计一个数控分频器. 3、实验程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PULSE IS P O R T(C L K:I N S T D_L O G I C; D : IN STD_LOGIC_VECTOR(7DOWNTO0); F O U T:O U T S T D_L O G I C); END; ARCHITECTURE ONE OF PULSE IS S I G N A L F U L L:S T D_L O G I C; BEGIN P_REG:PROCESS(CLK) VARIABLE CNT8:STD_LOGIC_VECTOR(7 DOWNTO0); B E G I N I F C L K'E V E N T A N D C L K='1'T H E N I F C N T8="11111111"T H E N C N T8:=D;- 当 CNT8 计数 计满时,输入数据 D 被同步预置给计数器 C N T8 F U L L<='1';-- 同时使溢出标 志信号 FULL 输出为高电平 E L S E C N T8:=C N T8+1; -- 否则继续作加

计数 F U L <= '0'; -- 且输出溢出标志信号 FULL 为低电平 E N D I F; E N D I F; E N D P R O C E S S P_R E G P_DIV: PROCESS(FULL) V A R I A B L E C N T2:S T D_L O G I C; B E G I N IF FULL'EVENT AND FULL = '1' T H E N C N T2 := NOT CNT2;-- 如果溢出 标志信号 FULL 为高电平, D 触发器输出取反 I F CNT2 = '1' T H E N F O U T <= '1'; E L S E F O U T<='0'; E N D I F; E N D I F; E N D P R O C E S S P_D I V END;

数控分频verilog

EDA实验报告 数控分频器 实验目的 1.掌握数控分频器的工作原理并能够用virlog语言编写代码,熟悉EDA6000实验箱的 使用方法。 2.进一步熟悉quartusII建立程序编译、仿真及下载的操作流程并学会数控分频器的 V erilog硬件设计 实验步骤 1.新建V erilog工程,编写代码并保存至与模块名对应的文件夹。注意:项目应存为系 统盘以外的盘内,路径中不含中文字符。 2.编译程序,编译无误后,在【tools】里面选择RTL视,观察电路结构。 3.新建波形文件进行仿真。保存时要和源程序存放在同一目录下。设置好输入波形参数 后,开始仿真。在仿真后输入输出波形中观察逻辑关系是否正确。 4.将实验箱和PC合理连接起来。打开EDA6000软件,设置好芯片类型为ACEX1K (EP1K30TC144-3),载入模式9. 5.根据EDA6000界面内管脚对应芯片的实际管脚在QUARTUSII里面设定 管脚号并检查无误。 6.将程序下载至FPGA内,并在EDA6000软件界面内进行验证测试。 程序代码1 /////偶数分频占空比50%,奇数分频没做要求////////// module divider(clk,data,fout); //数控分频器 input clk; //时钟输入 input[7:0]data; //预置数控分频数(对应的十进制数) output fout; //分频输出 reg [7:0]m; reg cout1; always @(posedge clk) begin if(m==data-1)begin m<=0;cout1=~cout1;end else m<=m+1; if(m==(data-1)/2)begin cout1=~cout1;end else begin cout1<=cout1;end end assign fout=cout1; endmodule

相关文档