数控分频器,实现对1MHz时钟的分频

数控分频器,实现对1MHz时钟的分频

数控分频器,实现对1MHz时钟的分频,分频比为1至10之间的任意整数。

library ieee;

use ieee.std_logic_1164.all;

entity oneMHZ is

port( clkin:in std_logic; --时钟信号输入

clkout:out std_logic); --时钟信号输出

end oneMHZ;

architecture aroneMHZ of oneMHZ is

signal data:integer range 0 to 10;

signal Q:std_logic;

begin

process(clkin)

begin

if rising_edge(clkin) then

if(data=0) then --此句为你想要的分频比,data=0,1,2,3,4.......9的分频比为1,2,3,,,10 data<=0;

Q<=not Q;

else

data<=data+1;

end if;

end if;

clkout<=Q;

end process;

end ar oneMHZ;

哈工大FPGA设计与应用分频器设计实验报告

FPGA设计与应用 分频器设计实验报告 班级:1105103班 姓名:郭诚 学号:1110510304 日期:2014年10月11日

实验性质:验证性实验类型:必做开课单位:电信院学时:2学时 一、实验目的 1、了解Quartus II软件的功能; 2、掌握Quartus II的HDL输入方法; 3、掌握Quartus II编译、综合、适配和时序仿真; 4、掌握Quartus II管脚分配、数据流下载方法; 5、了解设计的资源消耗情况; 6、掌握分频器和计数器的实现原理; 7、掌握数码管的静态和动态显示原理 二、实验准备(1分) 2.1 EP2C8的系统资源概述 逻辑单元8,256 M4K RAM 块(4k比特+512校验比特) 36 总的RAM比特数165,888 嵌入式乘法器18 锁相环PLLs 2

2.2 工程所用到的FPGA引脚及功能说明 工程所用到的FPGA引脚及功能说明: PIN_23是时钟引脚; PIN_114 PIN_117 PIN_127 PIN_134是数码管的位选引脚; PIN_133 PIN_116 PIN_110 PIN_112 PIN_128 PIN_118 PIN_115是数码管段选信号引脚;实验所用的LED是共阴级连接 2.3 数码管的动态显示原理 动态显示是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O 线控制,当输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于FPGA对位选通COM端电路的控制,所以只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

杭州电子科技大学数电大作业实验报告电子琴

数电大作业实验报告如图是CODE3的case语句程序,该模块是一个编码器,即将输入的8位琴键信号进行编码,输出一个4位码,最多能对应16个音符(若有16个键)。 如图所示是INX2CODE的case语句程序,该模块是一个译码器,它将来自键盘输入的编码信号译码成数控分频器SPK0输出信号的频率控制字。 另外两个模块是M_CODE和DCD7SG,它们的case语句程序如上图所示。前者的功能是将来自CODE3的键盘编码译成简谱码和对应的音调高低值H,后者是一个数码管7段显示译码器,负责将简谱码译成数码管的显示信号。 如图所示是SPK0模块的内部结构。其中的计数器CNT11B是一个LPM宏模块,这是一个11位二进制加法计数器。在设置其结构参数时,应该选择同步加载控制,即sload(Synchronous Load),这样能较好地避免来自进位信号cout中可能的毛刺影响。异步加载aload极易受到随机窄脉冲的误触发,在此类电路中不宜采用。图中D触发器和反相器的功能是将用于控制加载的进位信号延迟半个时钟周期,一来也是为了滤除可能的毛刺,以免对加载更为可靠,因为这时,时钟上升沿正好处于加载脉冲的中点。 模块CODE3,INX2CODE和SPK0的主要工作过程是这样的: 当按琴键后,产生的数据经编码器获得一个编码(例如,当按下第二个键,对应0010,即2),它对应模块INX2CODE中的一个值(2对应390H)。当这个值(如390H)被置入模块SPK0中的11位可预置计数器中后。由于计数器的进位端与预置数加载段端相连,导致此计数器将不断以此值作为计数起始值,直至全1。

以下以预置值为390H为例,来计算SPK0输出信号的频率值。 当以390H为计数器起始值后,此计数器成为一个模(7FFH-390H=46FH=1135)的计数器。即每从CLK端输入1135个脉冲,BEEP端输出一个进位脉冲。由于输入的时钟频率是1MHz (周期是1us),于是BEEP输出的信号频率是1/(1135us)=841Hz。 由下面电子琴的顶层电路可见,SPK0的输出信号经过一个由D触发器接成的T’触发器后才输出给蜂鸣器。这时信号被作了二分频,于是,预置值390H对应的与蜂鸣器发音的基频F 约等于440Hz。 B 电子琴顶层电路中T’触发器有两个功能,一个作用是作二分频器;另一个作用是作为占空比均衡电路。这是因为由SPK0模块输出信号的脉宽极窄,功率极低,无法驱动蜂鸣器,但信号通过T’脉宽就均匀了(F 的占空比为50%)。 B 如图所示是电子琴顶层设计电路,含2个输入口和3个输出口。 1.工作时钟CLK,频率:1MHz。用于在主控模块中产生与琴键对应的振荡频率,以驱动蜂 鸣器发出相应的声音。 2.琴键输入DIN[7..0].8个音符,8位中只能有一位为0,即8个琴键中每一时刻只能按 一个键。 3.输出端口SPK0用于驱动蜂鸣器。 4.输出信号LED接数码管,用于显示对应的简码谱。H显示音高低。

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)

VHDL非整数分频器设计实验报告

非整数分频器设计 一、 输入文件 输入时钟CLK: IN STD_LOGIC 二、 设计思路 1. 方法一:分频比交错 (1) 确定K 值 先根据学号S N 确定M 和N :为了保证同学们的学号都不相同,取学号的后四位,即N S =1763 ()mod 1920(mod 17)0 17mod 17 S S S N N if N then M else M N =+=== 由以上公式,得N=(1763 mod 19)+20=35 M=(1763 mod 17)=12 然后根据下式计算分频比K 的值: 8()9N M M K 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--定义实体,实体名DIV PORT(F_IN: IN STD_LOGIC;--输入时钟信号 F_OUT: OUT STD_LOGIC--输出时钟信号 ); END DIV; ARCHITECTURE A OF DIV IS SIGNAL 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分频 BEGIN P1:PROCESS(F_IN)--8、9分频计数进程 BEGIN IF (F_IN'EVENT AND F_IN='1') THEN IF(FS_CTL='0') THEN--9分频 IF CN2=8 THEN--计数 CN2<=0; ELSE CN2<=CN2+1; END IF; IF CN2>4 THEN--控制输出,占空比0.5 F_OUT<='1'; ELSE F_OUT<='0'; END IF; IF CN2=8 THEN--控制整体计数器驱动信号 C_ENB<='1'; ELSE C_ENB<='0'; END IF; ELSE IF CN1=7 THEN--8分频计数,同上 CN1<=0; ELSE CN1<=CN1+1; END IF; IF CN1>3 THEN F_OUT<='1'; ELSE F_OUT<='0'; END IF; IF CN1=7 THEN C_ENB<='1'; ELSE C_ENB<='0'; END IF; END IF; END IF; END PROCESS P1; P2:PROCESS(C_ENB)--整体计数进程 BEGIN IF (C_ENB'EVENT AND C_ENB='1') THEN--由驱动信号驱动 IF CN=34 THEN--计数 CN<=0; ELSE CN<=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'; ELSE FS_CTL<='1'; END IF;--8、9分频比例分配 ELSE CN<=CN; END IF; END PROCESS P2; END A;

分频器实验报告

分频器实验报告 分频器实验报告 start simulation直至出现 simulation as suessful,仿真结束。观察仿真结果。 时序仿真 图 : 六.实验过程所出现的问题及其解决 通过本次实验,初步掌握了语言的初步设计,收获颇多。但在实验过 程中也遇到了许多的问题,通过自己的独立思考和老师同学的相互讨 论对这个实验有了进一步的了解和认识。在最初建立工程的地方出现 了不少问题,因为没有详细阅读教材,导致无法成功建立工程运行程 序,最后认真熟读教材后,解决了问题。通过对错误的分析和解决, 让自己更好的掌握这一软件的基础操作,为下一次试验打下了见识的 基础。篇五: 八位十进制分频器实验报告 重庆交通大学信息科学与工程学院综合性实 验报告 姓名: 赵娅琳学号 10950214 班级:

通信工程专业201X级 2班 实验项目名称: 8位16进制频率及设计 实验项目性质: 设计性 实验所属课程: 数字设计基础 实验室 BEGIN IF CLKK'EVENT AND CLKK='1' THEN --1Hz时钟2分频 Div2CLK <= NOT Div2CLK; END IF; END PROCESS; PROCESS BEGIN IF CLKK='0' AND Div2CLK='0' THEN RST_CNT<='1'; --产生计数器清零信号 ELSE RST_CNT <='0'; END IF; END PROCESS; Load <= NOT Div2CLK; CNT_EN <= Div2CLK; END behav; 3、十进制计数模块

EDA实验报告

实验一计数器设计 一、实验目的 计数器是实际中最为常用的时序电路模块之一,本实验的主要目的是掌握使用HDL描述计数器类型模块的基本方法。 二、实验仪器与器材 1.EDA开发软件一套 2.微机一台 3.实验开发系统一台 4.其他器材与材料若干 三、实验说明 计数器是数字电路系统中最重要的功能模块之一,设计时可以采用原理图或HDL语言完成。下载验证时的计数时钟可选连续或单脉冲,并用数码管显示计数值。 四、实验要求 1.设计一个带有计数允许输入端、复位输入端和进位输入端的十进制计数器。 2.编制仿真测试文件,并进行功能仿真。 3.下载并验证计数器功能。 4.为上述设计建立元件符号。 5.在上述基础上设计计数器。 五、实验结果

十进制计数器程序: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity counter10 is port(en,reset,clk:in std_logic; q:buffer std_logic_vector(3 downto 0); co:out std_logic); end counter10; architecture behav of counter10 is begin process(clk,en) begin if clk'event and clk='1' then if reset='1' then q<="0000"; elsif en='1' then if q<"1001" then q<=q+'1'; else q<="0000"; end if; end if; end if; end process;

EDA 实验2简单分频时序逻辑电路设计 实验报告

时序电路设计 实验目的: 1.掌握条件语句在简单时序模块设计中的使用。 2.学习在Verilog模块中应用计数器。 实验环境: Windows 7、MAX+PlusⅡ10等。 实验内容: 1.模为60的8421BCD码加法计数器的文本设计及仿真。 2.BCD码—七段数码管显示译码器的文本设计及仿真。 3.用For语句设计和仿真七人投票表决器。 4.1/20分频器的文本设计及仿真。 实验过程: 一、模为60的8421BCD码加法计数器的文本设计及仿真: (1)新建文本:选择菜单File下的New,出现如图5.1所示的对话框,在框中选中“Text Editor file”,按“OK”按钮,即选中了文本编辑方式。 图5.1 新建文本 (2)另存为V erilog编辑文件,命名为“count60.v”如图5.2所示。 (3)在编辑窗口中输入程序,如图5.3所示。

图5.2 另存为.V编辑文件图5.4 设置当前仿真的文本设计 图5.3 模为60的8421BCD码加法计数器的设计代码

(4)设置当前文本:在MAX+PLUS II中,在编译一个项目前,必须确定一个设计文件作为当前项目。按下列步骤确定项目名:在File菜单中选择Project 中的Name选项,将出现Project Name 对话框:在Files 框内,选择当前的设计文件。选择“OK”。如图5.4所示。 (5)打开编译器窗口:在MAX—plusⅡ菜单内选择Compiler 项,即出现如图5.5的编译器窗口。 图5.5 编译器窗口 选择Start即可开始编译,MAX+PLUS II编译器将检查项目是否有错,并对项目进行逻辑综合,然后配置到一个Altera 器件中,同时将产生报告文件、编程文件和用于时间仿真用的输出文件。 (6)建立波形编辑文件:选择菜单File下的New选项,在出现的New对话框中选择“Waveform Editor File”,单击OK后将出现波形编辑器子窗口。 (7)仿真节点插入:选择菜单Node下的Enter Nodes from SNF选项,出现如图5.6所示的选择信号结点对话框。按右上侧的“List”按钮,在左边的列表框选择需要的信号结点,然后按中间的“=>”按钮,单击“OK”,选中的信号将出现在波形编辑器中。 图5.6 仿真节点插入

八位十进制分频器实验报告

重庆交通大学 信息科学与工程学院 综合性实验报告 姓 名: 赵娅琳 学 号 10950214 班 级: 通信工程专业2010级 2班 实验项目名称: 8位16进制频率及设计 实验项目性质: 设计性 实验所属课程: 数字设计基础 实验室(中心): 现代电子实验中心 指 导 教 师 : 李 艾 星 实验完成时间: 2012 年 6 月 18 日

教师评阅意见: 签名:年月日 实验成绩: 一、课题任务与要求 1、验证8位16进制频率计的程序; 2、根据8位16进制频率计的程序设计8位10进制频率计; 二、设计系统的概述 频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率,通常情况下计算每秒内待测的脉冲个数,此时闸门时间为1秒,闸门时间也可以大于或小于1秒。频率信号易于传输,抗干扰性强,可以获得较好的测量精度。 数字频率计的关键组成部分包括一个测频控制信号发生器、一个计数器和一个锁存器,另外包括脉冲发生器、姨妈驱动电路和显示电路。 工作过程:系统正常工作时,脉冲信号发生器输入1HZ的标准信号,经过测频控制信号发生器的处理,2分频后即可产生一个脉宽为1秒的时钟信号,以此作为计数闸门信号。测量信号时,将被测信号通过计数器作为时钟。当技术闸门信号高平有效时,计数器开始计数,并将计数结果送入锁存器中。设置锁存器的好处是现实的数据稳定,不会由于周期的清零信号而不断闪烁。最后将所存的数值由外部的译码器并在数码管上显示。 三、单元电路的设计与分析(重点描述自己设计部分) 1、八位十进制计数顶层模块设计 (1)、此模块是元件例化语句将各个元件(测频控制模块、十进制计数模块、测频锁存器模块)连接形成一个整体,完成最终频率计所期望的功能。

电子琴实验报告乐曲硬件演奏电路设计本科论文

武夷学院实验报告 课程名称:逻辑设计与FPGA 项目名称: 乐曲硬件演奏电路设计 ______________ 姓名: 专业:微电子学 班级:14微电子 学号:04实验日期 、 实验预习部分: 1. 实验目的: 学习利用数控分频器设计硬件乐曲演奏电路。 2. 实验原理: 综合利用数控分频器、LPM ROMPLL 等单元电路设计硬件乐曲演奏电路。系统框图如图 1 所示由三个模块组成,分别为 NOTETABSTONETABASPEAKERA NOTETAB 模块(把教材图9-4中的CNT138T 和MUSIC 模块合在一起即为此模块)类似于弹 琴人的手指;TONETAB 模块类似于琴键;SPEAKER 类似于琴弦或音调发生器。 音符的频率由SPEAKER 模块(与教材图9-4中的SPKEF 模块对应)获得,这是一个数控分 频器。由其CLK 端输入一具有较高频率(12MHZ 的信号,通过SPEAKER 分频后由SPKOU 输出。 SPEAKER 对CLK 输入信号的分频比由11位预置数TONE[10..0]决定。SPKOU 的输出频率将决定 每一音符的音调,这样,分频计数器的预置值 TONE[10..0]与SPKOU 的输出频率就有了对应关 系。例如在TONETAB 模块(与教材图9-4中的F_COD 模块对应)中若取 TONE[10..0] = 1036, 图1硬件乐曲演奏电路结构框图 i.;E-Z

将发出音符“ 3”音的信号频率。

实验预习成绩(百分制)____________________ 实验指导教师签字:_________________________

数控分频器实验报告

《数控分频实验》 姓名:谭国榕班级: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;

EDA实验报告

EDA 实验报告 实验一:组合电路的设计 实验内容是对2选1多路选择器VHDL 设计,它的程序如下: ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT; BEGIN d <= a AND (NOT S) ; e <= b AND s ; y <= d OR e ; END ARCHITECTURE one ; Mux21a 仿真波形图 以上便是2选1多路选择器的VHDL 完整描述,即可以看成一个元件mux21a 。mux21a 实体是描述对应的逻辑图或者器件图,图中a 和b 分别是两个数据输入端的端口名,s 为通道选择控制信号输入端的端口名,y 为输出端的端口名。Mux21a 结构体可以看成是元件的内部电路图。最后是对仿真得出的mux21a 仿真波形图。 Mux21a 实体 Mux21a 结构体

实验二:时序电路的设计 实验内容D 触发器的VHDL 语言描述,它的程序如下: LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF1 IS BEGIN PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK = '1' THEN Q <= D ; END IF; END PROCESS ; END bhv; D 触发器的仿真波形图 最简单并最具代表性的时序电路是D 触发器,它是现代可编程ASIC 设计中最基本的时序元件和底层元件。D 触发器的描述包含了VHDL 对时序电路的最基本和典型的表达方式,同时也包含了VHDL 中许多最具特色的语言现象。D 触发器元件如上图所示,其在max+plus2的仿真得出上面的波形 D 触发器

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%的周期

实验一 QUARTUS II入门和分频器设计

实验报告 课程名称EDA技术与VHDL设计 实验项目Quartus II入门 实验仪器计算机、Quartus II 系别信息与通信工程学院 专业电子信息工程 班级/学号电信1201 / 2012010970 学生姓名张宗男 实验日期 成绩 指导教师

实验一 QUARTUS II入门和分频器设计 一、实验目的 1.掌握QUARTUS II工具的基本使用方法; 2.掌握FPGA基本开发流程和DE2开发板的使用方法; 3.学习分频器设计方法。 二、实验内容 1.运用QUARTUS II 开发工具编写简单LED和数码管控制电路并下载到DE2 实验开发板。2.在QUARTUS II 软件中用VHDL语言实现十分频的元器件编译,并用电路进行验证,画出仿真波形。 三、实验环境 1.软件工具:QUARTUS II 软件;开发语言:VHDL; 2.硬件平台:DE2实验开发板。 四、实验过程 1.设计思路 (1)、 18个开关控制18个LED灯,通过低位四个开关的‘1’‘0’控制LED灯上7段灯的显示(2)、 实现10分频IF(count="1001") THEN count<="0000"; clk_temp<=NOT clk_temp; 达到9的时候,把“0000”给到cout,然后clk_temp 信号翻转,从而实现10分频。 2.VHDL源程序 (1)、 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY e_zhangzongnan IS PORT(SW :IN STD_LOGIC_VECTOR(0 TO 17); HEX0 :OUT STD_LOGIC_VECTOR(0 TO 6);

EDA分频器实验教案

实验三:整数分频器的设计 一实验目的 了解利用类属设计可配置的重用设计技术。 二实验原理 利用类属n 可以改变分频器的分频系数,输出q的频率是输入信号clk频率的1/n。通过给n赋不同的值,就可以得到需要的频率。 三实验器材 EDA实验箱 四实验内容 1.参考教材第5章中5.3.1,完成整数分频器的设计。 2.修改5. 3.1中的分频系数n,观察仿真波形和实验箱输入/输出信号的变化。 3.在试验系统上硬件验证分频器的功能。 在实验三中,建议将实验箱的实验电路结构模式设定为模式7。输入信号clk由键7的输出来模拟,输入信号reset_n由键8模拟,输出信号q接至LED:D14。当然,也可以由实验者设定到其它功能相似的键或者LED。

代码:(参考教材第5章中5.3.1) library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity div is generic(n:integer:=8); port(clk,reset_n:in std_logic; q: out std_logic); end div; architecture behavl_div of div is signal count:integer range n-1 downto 0; begin process(reset_n,clk) begin if reset_n='0' then q<='0'; count<=n-1; elsif(clk'event and clk='1' and clk'last_value='0')then count<=count-1; if count>=(n/2)then q<='0'; else q<='1'; end if; if count<=0 then count<=n-1; end if; end if; end process; end behavl_div; 五实验注意事项 1.编写代码时一定要书写规范 2模式的选择和引脚的配置一定要合理 六实验报告 简述实验过程,将实验项目分析设计,仿真和测试写入实验报告。

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.学会使用电路设计与仿真软件工具Hspice,熟练地用网表文件来描述模拟电路,并熟悉应用Hspice内部元件库。通过该实验,掌握Hspice的设计方法,加深对课程知识的感性认识,增强电路设计与综合分析能力。 2.分频器大多选用市售成品,但市场上出售的分频器良莠不齐,质量上乘者多在百元以上,非普通用户所能接受。价格在几十元以下的分频器质量难以保证,实际使用表现平庸。自制分频器可以较少的投入换取较大的收获。 二.内容 分频器-概述 分频器是指使输出信号频率为输入信号频率整数分之一的电子电路。在许多电子设备中如电子钟、频率合成器等,需要各种不同频率的信号协同工作,常用的方法是以稳定度高的晶体振荡器为主振源,通过变换得到所需要的各种频率成分,分频器是一种主要变换手段。早期的分频器多为正弦分频器,随着数字集成电路的发展,脉冲分频器(又称数字分频器)逐渐取代了正弦分频器,即使在输入输出信号均为正弦波时也往往采用模数转换-数字分频-数模转换的方法来实现分频。正弦分频器除在输入信噪比低和频率极高的场合已很少使用。

分频器-作用 分频器是音箱中的“大脑”,对音质的好坏至关重要。功放输出的音乐讯号必须经过分频器中的各滤波元件处理,让各单元特定频率的讯号通过。要科学、合理、严谨地设计好音箱之分频器,才能有效地修饰喇叭单元的不同特性,优化组合,使得各单元扬长避短,淋漓尽致地发挥出各自应有的潜能,使各频段的频响变得平滑、声像相位准确,才能使高、中、低音播放出来的音乐层次分明、合拍,明朗、舒适、宽广、自然的音质效果。 在一个扬声器系统里,人们把箱体、分频电路、扬声器单元称为扬声器系统的三大件,而分频电路对扬声器系统能否高质量地还原电声信号起着极其重要的作用。尤其在中、高频部分,分频电路所起到的作用就更为明显。其作用如下: 合理地分割各单元的工作频段; 合理地进行各单元功率分配; 使各单元之间具有恰当的相位关系以减少各单元在工作中出现的声干涉失真; 利用分频电路的特性以弥补单元在某频段里的声缺陷; 将各频段圆滑平顺地对接起来。 分频器-分类 1)功率分频器:位于功率放大器之后,设置在音箱内,通过LC滤波网络,将功率放大器输出的功率音频信号分为低音,中音和高音,分别送至各自扬声器。连接简单,使用方便,但消耗功率,出现音频谷

vhdl实验报告--蜂鸣器

VHDL 实验报告 一、实验目的 1、掌握蜂鸣器的使用; 2、通过复杂实验,进一步加深对VHDL语言的掌握程度。 二、实验原理乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在蜂鸣器上连续地发出各个音符的音调。而要准确地演奏出一首乐曲,仅仅让蜂鸣器能够发声是不够的,还必须准确地控制乐曲的节奏,即每个音符的持续时间。由此可见,乐曲中每个音符的发音频率及其持续的时间是乐曲能够连续演奏的两个关键因素。 乐曲的12 平均率规定:每2 个八度音(如简谱中的中音1 与高音1)之间的频率相差1 倍。在2个八度音之间,又可分为12个半音。另外,音符A(简谱中的低音6)的频率为440Hz, 音符B到C之间、E到F之间为半音,其余为全音。由此可以计算出简谱中从低音I至高音1 之间每个音符的频率,如表所示。 音名频率/Hz 音名频率/Hz 音名频率/Hz 低音1 中音1 高音1 低音2 中音2 高音2 低音3 中音3 高音3 低音4 中音4 高音4 低音5 392 中音5 784 高音5 1568 低音6 440 中音6 880 高音6 1760 低音7 中音7 高音7 表简谱音名与频率的对应关系 产生各音符所需的频率可用一分频器实现, 由于各音符对应的频率多为非整数, 而分频系数又不能为小数, 故必须将计算得到的分频数四舍五入取整。若分频器时钟频率过低, 则由于分频系数过小, 四舍五入取整后的误差较大;若时钟频率过高,虽然误差变小,但分频数将变大。实际的设计应综合考虑两方面的因素, 在尽量减小频率误差的前提下取合适的时钟频率。实际上,只要各个音符间的相对频率关系不变,演奏出的乐曲听起来都不会走调。 音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定。因此, 要控制音符的音 长,就必须知道乐曲的速度和每个音符所对应的节拍数, 本例所演奏的乐曲的最短的音符为四分音符,如果将全音符的持续时间设为1s 的话,那么一拍所应该持续的时间为秒,则只需要提供一个4HZ的时钟频率即可产生四分音符的时长。 本例设计的音乐电子琴选取40MHZ的系统时钟频率。在数控分频器模块,首先对时钟频率进行40分频,得到1MHZ的输入频率,然后再次分频得到各音符的频率。由于数控分频器 输出的波形是脉宽极窄的脉冲波, 为了更好的驱动蜂鸣器发声, 在到达蜂鸣器之前需要均衡占空比, 从而生成各音符对应频率的对称方波输出。这个过程实际上进行了一次二分频, 频率变为原来的二分之一即。 因此,分频系数的计算可以按照下面的方法进行。以中音1为例,对应的频率值为 523. 3Hz,它的分频系数应该为: 0.375MHZ 0.375 106 716 523.3 523.3

实验报告1 简单分频器

课程名称:FPGA指导老师:_竺老师_______成绩:__________________ 实验名称:简单分频器的设计实验类型:_______同组学生姓名:__俞杰草______ 一、实验目的和要求(必填)二、实验内容和原理(必填) 三、主要仪器设备(必填)四、操作方法和实验步骤 五、实验数据记录和处理六、实验结果与分析(必填) 七、讨论、心得 一.实验目的 a)熟悉Xilinx ISE软件,学会设计,仿真,综合和下载。 b)熟悉实验板电路设定频率的方法。 二.实验内容 根据实验板上晶振的输入频率50MHz,如果直接用这么高的时钟频率来驱动LED的闪烁,人眼将无法分辨。因此本实验着重介绍如何通过分频计数器的方式将50MHz的输入频率降低为人眼可分辨的频率(10Hz以下),并在实验板的LED2~LED5上显示出来。 三.实验记录 【实验现象】 当将rst_n信号对应的开关拨下,led0熄灭,其他所有led亮。 当将rst_n信号对应的开关往上拨,有7盏led亮,1盏led灭,且灭的led从led0向led7,再跳回led0不断循环往复的移动。 【主要程序段分析】 reg[22:0]cnt; always@(posedge clk) if(rst_n)cnt<=23'd0; else cnt<=cnt+1'b1;//带复位键的位宽为24位的分频计数器,以降低闪烁频率reg[7:0]led; always@(posedge clk) if(rst_n) led<=8'b00000001;//按键复位 else if((cnt==23'h7fffff)&&(led==8'b10000000)) led<=8'b00000001;//循环一周后从D5开始下一周的循环 else if(cnt==23'h7fffff) led<=led<<1;//左移一位,右端补零 assign led_d2=~led[2]; assign led_d4=~led[4];

数控分频器的设计

实验四数控分频器的设计 一、实验目的: 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;//数码管输出

相关文档
最新文档