EDA 数控分频器的设计
EDA数控分频器的设计报告

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

图2.1
占空比为0.5的3分频电路仿真结果如图2.2所示,k_or输出波形的周期为clk脉冲的周期的倍,且占空比为50%。
图2.2
占空比为0.25的8分频电路模型如图2.3所示,有一个脉冲端口(clk),和一个输出端口
图2.3
占空比为0.25的8分频电路仿真结果如图2.4所示,k1输出波形的周期为clk脉冲的周期的倍,且占空比为25%。
图2.4
、结果分析与实验体会
经过本次实验,我对用xlinx软件进行EDA设计有了进一步的认识和理解,经过上一次的实验,这一次可以说是轻车熟路,尽管如此,在实验过程中还是遇到了很多问题,但在同学和老师的帮助这些问题都一一解决。
在解决这些问题的过程中,我体会不同开发环境对VHDL编码的要求,Xilinx ISE FPGA与QuartusII开发环境的区别,了解到更加严格,在中可以编译通过的程序。
EDA分频器设计论文

1 引言简易多功能信号发生器是信号发生器的一种,在生产实践和科研领域中有着广泛的应用。
在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都需要有信号源,由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其他仪器观察、测量被测仪器的输出响应,以分析确定它们的性能参数。
信号发生器是电子测量领域中最基本、应用最广泛的一类电子仪器。
它可以产生多种波形信号,如正弦波,三角波,方波和锯齿波等,因而广泛用于通信、雷达、导航、宇航等领域。
本设计是采用VHDL来实现的简易多功能信号发生器。
它能产生正弦波,三角波,方波和锯齿波。
且对各种波形的要求如下:(1)根据按键选择不同的波形(实现正弦波,三角波,方波和锯齿波);(2)各波形的频率范围为100Hz-20KHz;(3)各波形频率可调(通过按键控制频率的变化,步进值为500Hz);(4)用LED数码管实时显示输出波形的频率值;(5)用按键控制实现输出信号的幅度调节(幅度调节为2.5V和5V)。
2 设计原理2.1设计思想信号发生器产生、控制和显示的总体结构图如图所示图1 总体结构图外部输入一个50MHZ的时钟频率,经过频率控制单元控制其频率在要求的范围内,由4选1数据选择器实现对输出波形的选择,再通过D/A转换模块,将数字信号转换成模拟信号在示波器上显示出来。
2.2 总体原理图基于VHDL语言设计一个简易多功能信号发生器,通过选入输入信号,可以输出正弦波、三角波、方波和锯齿波四种波形信号。
信号发生器的控制模块可以用数据选择器实现,四种信号的信号选择可以用4选1数据选择器实现。
同时本设计使用原理图的方法,对正弦波、三角波、方波和锯齿波和4选1数据选择器元件进行调用。
简易多功能信号发生器的原理图如下:2.3 总体功能介绍由总体原理图可知,总体有六个输入,六个个输出。
其中一个时钟输入端clk,以一个频率调节输入端b,一个使系统输出波形的频率为最大的控制输入端h和一个使系统输出波形的频率为最小的控制输入端l,sel进行幅度调节,一个波形选择输入端a,波形输出b,五个频率显示数码管。
EDA分频器实验报告 含有实验程序、仿真图像 三分频 八分频

if(!rst_n) begin
t2<=0;
k2<=0;
end
else begin
if(t2==2'b10) begin
t2<=0;
k2<=k2;
end
else begin
t2<=t2+1;
k2<=!k2;
end
end
end
assign clk_out=k1|k2;
endmodule
2、八分频器程序:
moduleba(inclk,tick);
output tick;
input inclk;
reg [1:0] t;
reg tick;
always @ (posedge inclk)
begin
if(t==3)
begin
tick =~tick;
t=0;
end
else t=t+1;
end
endmodule
五、实验仿真波形
六、实验总结和感想
通过这次实验我对PLD的设计流程有了更深的感触,明白了其设计的一般步骤及方法,为以后的Quartus Ⅱ的综合设计奠定了基础。同时,对于分频器程序的编写有了更深的认识,这能更好的促进我们以后的理论学习。实验过程中也必须本着不骄不躁、耐心严谨,否则容易出错而达不到实验要求。
三、实验内容
1、根据要求设计三分频器、八分频器。
2、对设计的分频器进行波形仿真分析。
四、三位、八位简易频率计程序
1、三分频器程序
modulesan(clk_in,rst_n,clk_out);
input clk_in;
eda实验三 数控分频器设计

实验三数控分频器设计【实验目的】1.设计实现一个根据不同的输入,将时钟信号进行分频2.掌握分频计数器类型模块的Verilog描述方法;3.学习设计仿真工具的使用方法;4.学习层次化设计方法;【实验内容】1.用Verilog 语言设计带计数允许和复位输入的数控分频器。
2.编制仿真测试文件,并进行功能仿真。
3.下载并验证分频器功能【实验原理】数控分频器的功能就是当在输入端给定不同数据时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相加即可。
【程序源代码】(加注释)module FDIV (clk,d,fout,pfull); //数控分频器顶层设计描述input [7:0]d; //定义一个七位数输入input clk; //定义一个时钟信号output fout ,pfull; //定义输出和记满标志位pfullreg[7:0] Q; //定义一个7位寄存器变量reg full;reg pfull;reg fout;always @ (posedge clk) //开始过程语句posedge clk位敏感变量beginif (Q==d) //当有上升沿敏感信号时Q==dbegin Q=0; //Q被清零full=1; // full被赋值为1endelsebeginQ=Q+1; full =0; //否则Q=Q+1,full=0pfull=full; //将full赋值给pfullendalways @ (posedge pfull) //过程语句posedge pfull为敏感变量fout=~fout; // fout取反以后赋值给fout endmodule //结束模块【仿真和测试结果】【实验心得和体会】通过本次试验,我们对数控分频器的设计与原理都有了初步的了解,例如给定100HZ的时钟信号,然后给定d=5的输入,而后输出信号的频率为10HZ。
EDA分频器的设计

EDA实验报告学院:班级:学号:指导老师:姓名:一、实验目的:学习数控分频器的设计,分析和测试方法。
二、实验原理:不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有计时器溢出位与预置数加载输入信号相接即可。
三、实验内容1、将4096HZ的时钟信号分频为1HZ的时钟信号。
实验原理图:实验源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dvf isport(clk_in:in std_logic;fout:out std_logic);end;architecture one of dvf issignal cnt: integer range 0 to 2048;signal clk_out:std_logic;beginprocess(clk_in)beginif clk_in'event and clk_in = '1' thenif cnt=2048 thencnt <=0;clk_out <=not clk_out;elsecnt<=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 isport(clk:in std_logic;s: in std_logic_vector(1 downto 0);clk_out:out std_logic);end;architecture one of dvf issignal clk1_out:std_logic;signal clk2_out:std_logic;signal clk3_out:std_logic;signal clk4_out:std_logic;signal cnt2048:integer range 0 to 2048; signal cnt1024:integer range 0 to 1024; signal cnt256:integer range 0 to 256; signal cnt128:integer range 0 to 128;beginfen1: process(clk)beginif clk'event and clk = '1' thenif cnt2048=2048 thencnt2048 <=0;clk1_out <=not clk1_out;elsecnt2048<=cnt2048+1;end if;end if;end process;fen2: process(clk)beginif clk'event and clk = '1' thenif cnt1024=1024 thencnt1024 <=0;clk2_out <=not clk2_out;elsecnt1024<=cnt1024+1;end if;end if;end process;fen8: process(clk)beginif clk'event and clk = '1' thenif cnt256=256 thencnt256 <=0;clk3_out <=not clk3_out;elsecnt256<=cnt256+1;end if;end if;end process;fen16: process(clk)beginif clk'event and clk = '1' thenif cnt128=128 thencnt128 <=0;clk4_out <=not clk4_out;elsecnt128<=cnt128+1;end if;end if;end process;xuan: PROCESS(s)BEGINCASE s ISWHEN "00" => clk_out<=clk1_out;WHEN "01" => clk_out<=clk2_out;WHEN "10" => clk_out<=clk3_out;WHEN "11" => clk_out<=clk4_out;WHEN OTHERS => NULL;END CASE;END PROCESS;END;功能仿真波形:实验引脚图:实验箱上工作情况:CLOCK5接4096HZ的时钟信号,按键1、键2使输入分别为00、01、10、11,扬声器输出声音频率分别为1HZ、2HZ、8HZ、16HZ。
基于EDA技术的数控分频器设计

基于EDA技术的数控分频器设计作者:韩丽英来源:《数字技术与应用》2009年第11期[摘要]数控分频器广泛应用在家庭数字音响、通信设备时序电路、数字频率计中。
另外,近年来已成为电子竞赛设计中常用的单元模块。
本文论述了数控分频器的基本原理、设计思路及小数分频器的原理及设计,并给出了一个2.5 分频器电路仿真波形。
[关键词]EDA技术数控分频器 VHDL语言[中图分类号]TN-4[文献标识码]A[文章编号]1007-9416(2009)11-0108-021 引言数控分频器广泛应用在家庭数字音响、通信设备时序电路、数字频率计中。
另外,近年来已成为电子竞赛设计中常用的单元模块。
笔者在连续三年指导学生电子设计竞赛过程中都用到了数控分频器。
用传统的设计方法设计数控分频器时,典型的设计是采用具有预置数据输入端的通用计数器芯片按设计要求完成。
但当分频系数较大时,需用多片集成计数器和设计更复杂的控制电路来实现,且设计成果的可修改性和可移植性都较差。
尤其是对于参加电子设计竞赛的学生,在有限的3-5天时间内要完成一个指定功能的设计,尤其不适合采用这种传统的“固定功能的集成电路+连线”的设计模式。
基于EDA技术的数控分频器设计,采用的是用软件的方法设计硬件的EDA (电子设计自动化)技术。
作为EDA技术重要组成部分的VHDL硬件描述语言是一种符合IEEE工业标准的建模语言。
用它设计的数控分频器可作为一个模块,移植到很多数字电路系统中,且极易修改,只要修改程序中的某几条语句,就可使最大分频系数得到改变。
整个设计过程简单、快捷。
可从根本上减少硬件调试的时间,为总体设计完成争取宝贵的时间。
2 通用数控分频器的原理数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,数控分频器可用计数值可并行预置的加法计数器设计实现。
所以数控分频器功能的实质是分频电路,即将一个给定的频率较高的数字输入信号,经过适当的处理后,产生一个或数个频率较低的数字输出信号。
EDA数控分频器设计的实验报告

实验报告
专业班级:电子092姓名:林明辉学号:200901122
实验课程:EDA技术实用教材
项目名称:
一.实验目的:1.了解并掌握QuartusⅡ使用方法
2.学Байду номын сангаас8位数码扫描器显示电路设计
3.实验箱的运用
实验原理:其中每个数码管的8个段:h、g、f、e、d、c、b、a(h是小数点)都分别连在一起,8个数码管分别由8个选通信号k1、k2、…k8来选择。被选通的数码管显示数据,其余关闭。如在某一时刻,k3为高电平,其余选通信号为低电平,这时仅k3对应的数码管显示来自段信号端的数据,而其它7个数码管呈现关闭状态。根据这种电路状况,如果希望在8个数码管显示希望的数据,就必须使得8个选通信号k1、k2、…k8分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。
二.实验步骤:1.先编好底层文件—数控分频器程序
2.编好8位数码扫描显示电路程序
3.把两个底层文件设置成符号文件
4.调用以上两个符号文件连成以下电路图
三.实验仪器:电脑一台
实验箱一个
四.数据记录及处理:
EDA实验五数控分频器的设计(程序)

三、实验效果分析(包过仪器设备等使用效果)三、实验效果分析:①八分频,十一分频器的程序主要包括两部分,一是先设定好计数的位数,让计数器计数,当计数满时产生溢出,使溢出标志位为高电平;二是当溢出标志位为1时,D 触发器的D状态发生翻转,从而产生高低电平的变化,而达到分频的目的,计数初值的不同,计数满所要的时钟个数也就不同,D触发器电平翻转所用的时间也就不同,频率也就不同。
②循环计数器是给定时器赋不同的初值,不同初值溢出所用的时间也就不同,状态翻转所用时间也就不同,从而达到实现不同音频循环输出的目的。
③硬件测试:写好程序连接好电路后电路能够很好的实验16种不同音频之间的循环输出,说明实验程序正确,对应的RTL仿真图形也正确。
④实验例序中的P_DIV进程的作用是当计数满产生溢出时让D触发器的状态发生翻转,D触发器状态的翻转的频率就是分频器输出的频率。
也就是做分频器的频率输出作用。
教师评语指导教师年月日江西师范大学物理与通信电子学院教学实验报告专业:电子信息工程2011年月日实验名称数控分频器的设计指导老师姓名年级学号成绩一、预习部分1、实验目的2、实验基本原理3、主要仪器设备(包含必要的元器件、工具)一、实验目的:1.了解数控分频器的设计原理以及分析和测试方法。
2.学会构造使用不同功能的数控分频器械。
二、实验基本原理:给定时器设定好初值,当计数满时溢出,产生溢出后溢出标志位D触发器取反,这样当设定不同的初值时产生一次溢出所用的时间也就不同,频率也就随之改变。
通过设定不同的初值从而产生不同的分频。
三、主要仪器设备电脑,实验箱二、实验操作步骤1.实验数据、表格及数据处理2.实验操作过程(可以用图表示)3.结论1.实验数据、表格及数据处理如下:十一分频器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sy52 isport(clk:in std_logic;d:in std_logic_vector(10 downto 0);fout:out std_logic);end ;architecture one of sy52 issignal full :std_logic;beginp_reg:process(clk)variable cnt8:std_logic_vector(10 downto 0);beginif clk'event and clk='1' thenif cnt8="11111111111"thencnt8:=d;full<='1';elsecnt8:=cnt8+1;full<='0';end if;end if;end process p_reg;p_div:process(full)variable cnt2:std_logic;beginif full'event and full='1'thencnt2:=not cnt2;if cnt2='1'thenfout<='1';elsefout<='0';end if ;end if ;end process p_div;end 2、实验操作过程如下:八分频器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sy51 isport(clk:in std_logic;d:in std_logic_vector(7 downto 0);fout:out std_logic);end ;architecture one of sy51 issignal full :std_logic;beginp_reg:process(clk)variable cnt8:std_logic_vector(7 downto 0);beginif clk'event and clk='1' thenif cnt8="11111111"thencnt8:=d;full<='1';elsecnt8:=cnt8+1;full<='0';end if;end if;end process p_reg;p_div:process(full)variable cnt2:std_logic;beginif full'event and full='1'thencnt2:=not cnt2;if cnt2='1'thenfout<='1';elsefout<='0';end if ;end if ;end process p_div;end ;。
数控分频器设计

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)波形分析由波形图可以知道实验成功。
河南工业大学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)实验一:一位全加器设计——原理图设计初步以下拟通过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。
实验五 EDA 数控分频器的设计

实验五数控分频器的设计一、实验目的1、学习数控分频器的设计、分析和测试方法。
2、了解和掌握分频电路实现的方法。
3、掌握EDA技术的层次化设计方法。
二、实验原理数控分频器的功能就是当输入端给定不同的输入数据时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器来设计完成的,方法是将计数溢出位与预置数加载输入信号相接得到。
三、实验内容本实验要求完成的任务是在时钟信号的作用下,通过输入八位的按键开关输入不同的数据,改变分频比,使输出端口输出不同频率的时钟信号,过到数控分频的效果。
在实验中时,数字时钟选择2HZ作为输入的时钟信号,用八个按键开关做为数据的输入,当八个按键开关置为一个二进制数时,在输出端口输出对应频率的时钟信号,用输出端口接LED灯来观察频率的变化。
四、实验步骤1、打开QUARTUSII软件,新建一个工程。
2、建完工程之后,再新建一个VHDL File,打开VHDL编辑器对话框。
3、按照实验原理和自己的想法,在VHDL编辑窗口编写VHDL程序.4、 编写完VHDL 程序后,保存起来。
方法同实验一。
5、 对自己编写的VHDL 程序进行编译并仿真,对程序的错误进行修改。
6、 编译仿真无误后,依照按键开关、LED 与FPGA 的管脚连接表(表1-1、表1-2)或参照附录进行管脚分配。
表5-1是示例程序的管脚分配表。
分配完成后,再进行全编译一次,以使管脚分配生效。
端口名 使用模块信号 对应FPGA 管脚说 明 INCLK CLOCK2 17 时钟为10KHZDATA0 键1 1 分频比数据 DATA 1 键2 2 DATA 2 键3 3 DATA 3 键4 4 DATA4 键5 5 DATA 5 键6 6 DATA 6 键7 7 DATA 7 键8 10 FOUTLED 灯 D111分频输出 表5-1 端口管脚分配表7、 “模式选择键”:按动该键能使实验板产生12种不同的实验电路结构。
EDA电子项目2.5分频器的原理图输入设计

四、项目实施——1. Quartus Ⅱ原理图设计 (1) 创建工程
在D:\altera\Quartus50\example\Freqdivider下建立 项目Freqdivider
选择EPM240T100C5作为目标器件
一、项目描述
2. 项目目标
序号 类别 1. 2. 3. 4. 目 标 掌握n.5分频器原理 掌握时序逻辑电路的EDA设计方法 掌握原理图设计文件的图元创建方法 掌握原理图输入法实现层次性设计
一
知识
二
技能
1. 掌握Quartus II软件的原理图输入的层次性设计方 法 2. 熟练掌握时序逻辑电路的设计方法 3. 能使用Quartus II软件的对设计电路进行时序仿真 4. 会调试学习开发板
五、项目评价与总结提高 2.项目总结
分频器属于时序逻辑电路,在进行原理图设计时, 可以采用一般的时序逻辑电路设计方法利用触发器 和门电路来进行设计。
3.拓展与提高
采用原理图输入方式,选用JK触发器设计模5同步减法分频器。 采用原理图输入方式,选用JK触发器设计4位单向右移寄存器。 采用原理图输入方式,选用D触发器设计3位数码寄存器。
良
能根据项目要求完成资 讯及学习,能制订合理 的行动计划。 分频器软硬件设计基本 正确,项目方案需要调 整。 能正确使用QuartusII 软件综合、编译、仿真 并下载程序到学习板, 能正确调试电路,基本 完成项目要求。
及格
能根据项目要求完成 资讯及学习,能制订 合理的行动计划 分频器软硬件设计思 路基本正确,但有一 定缺陷。 能正确使用 QuartusII软件综合 、编译、仿真并下载 程序到学习板,会调 试电路。
实验二 数控分频器

实验二数控分频器一、实验目的1.掌握数控分频器的工作原理并能够用verilog语言编写代码,熟悉EDA6000实验箱的使用方法。
2.进一步熟悉quartusII建立程序编译、仿真及下载的操作流程并学会数控分频器的Verilog硬件设计二、实验步骤1.新建Verilog工程项目,编写代码并保存至与模块名对应的项目文件夹。
2.编译程序,编译无误后,在【tools】里面选择RTL视图,观察电路结构。
3.新建波形文件进行仿真。
保存时要和源程序存放在同一目录下。
设置好输入波形参数后,开始仿真。
在仿真后输入输出波形中观察逻辑关系是否正确。
4.将实验箱和PC合理连接起来。
打开EDA6000软件,设置好芯片类型为ACEX1K(EP1K30TC144-3),载入模式9。
5.根据EDA6000界面内管脚对应芯片的实际管脚在QUARTUSⅡ里面设定管脚号并检查无误。
6.将程序下载至FPGA试验箱内,并在EDA6000软件界面内进行验证测试。
程序代码module divf(clk,din,pfull,clkout);input clk;input [7:0] din;output clkout,pfull;reg full,divclk;reg [7:0] count;always @(posedge clk) beginif(count==8'HFF) begincount<=din;full<=1; endelse if(count<255) begincount<=count+8'B1;full<=0; endendalways @(posedge full) begindivclk<=~divclk; endassign clkout=divclk;assign pfull=full;endmoduleRTL仿真设置根据试验箱指定管脚连接下载至EDA6000实验箱逻辑分析结果三、实验总结通过实验,我初步掌握了分频计数器类型模块的Verilog描述方法及层次化设计方法。
实验五数控分频器的设计

IF CNT2='1' THEN FOUT<='1';
ELSE FOUT<='0';
END IF;
END IF;
END PROCESS P_DIV;
END;
课后预习
下次实验做实验指导书上的实验7(P57) 设计程序可参考EDA实验教材P196-198中的内容
表1 简谱中音名与频率的关系
2、实验内容及步骤
(参照实验教材P53 实验 3 中的内容) 设计程序可参考EDA实验教材P191-192中 的内容
实验报告要求
写出实验目的、设计要求、设计源程 序,波形仿真,并详述硬件实验过程和实验 结果。
提示:
建议选实验电路模式5,输出FOUT 接扬 声 器 ( SPKER : PIN 3 ) , 时 钟 CLK 接 clock0(引脚号为2),用短路帽选65536Hz信号, 键1~键8负责输入预置数D。
P_DIV:PROCESS(FULL)—由于P_REG进程数控 分频输出的FULL是脉宽极窄的脉冲波,为便于 驱动扬声器, P_DIV进程为一个二分频计数器, 使到达扬声器的波形为对称方波。
VARIABLE CNT2:STD_LOGIC;
BEGIN
IF FULL'EVENT AND FULL='1'
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PULSE IS PORT(CLK:IN STD_LOGIC; D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); FOUT:OUT STD_LOGIC); END; ARCHITECTURE ONE OF PULSE IS SIGNAL FULL:STD_LOGIC; BEGIN
eda实验数控分频器

数控分频器一实验目的:学习数控分频器的设计,分析和测试方法。
二实验原理:数控分频器的功能就是当在输入端给定不同输入数值时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数器溢出位与预置数加载输入信号相接即可。
三实验内容:(1)打开quartus,在菜单中点击new,选择vhdl,在出现的窗口中输入vhdl代码并保存。
其中代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY EX9 ISPORT (clk : IN STD_LOGIC; -- IO30(P125)d : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- IO47..IO40 (P133, P132, P131, P130, P121, P120, P119, P118)pfull: OUT STD_LOGIC; -- IO01(P38)fout : OUT STD_LOGIC -- IO00(P37));END EX9;ARCHITECTURE behv OF EX9 ISSIGNAL full: STD_LOGIC;BEGINp_reg:PROCESS(clk)V ARIABLE cnt8: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF clk'EVENT AND clk = '1' THENIF cnt8 = "11111111" THENcnt8 := D; -- 计数满后置入初值重新计数full <= '1'; -- 置计数满信号ELSEcnt8 := cnt8 + 1;full <= '0';END IF;END IF;pfull <= full; -- 输出full用于观察END PROCESS p_reg;p_div: -- 将full信号除2,生成方波信号PROCESS(full)V ARIABLE cnt: STD_LOGIC;BEGINIF full'EVENT AND full = '1' THENcnt := NOT cnt;END IF;fout <= cnt;END PROCESS p_div;END behv;(2)创建工程之后对编译之前的参数进行设置,启动start compilation项,其编译结果如下:(3)时序仿真:对仿真前参数设置后启动start simulation,直到出现simulation was successful,仿真结束。
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 isgeneric(n:integer:=8);port(clk,reset_n:in std_logic;q: out std_logic);end div;architecture behavl_div of div issignal count:integer range n-1 downto 0;beginprocess(reset_n,clk)beginif reset_n='0' then q<='0'; count<=n-1;elsif(clk'event and clk='1' and clk'last_value='0')thencount<=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三分频器设计

EDA课程设计实验题目:占空比可调节的三分频器班级:电子081学号:***姓名:**1:实验要求:实现一个占空比可调节的三分频器,占空比可调节为1:3和1:2,时钟信号输入为CLK,带使能输入ENABLEBLE,输出信号分别为CLK1和CLK2对应两种占空比信号频率,设计实体统一为div.vhd。
2:源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity div isport(clk,enable:in std_logic;qout1,qout2:buffer std_logic;clk1,clk2:out std_logic) ;end entity div;architecture behave of div isbeginprocess(clk,enable)isvariable cnt:integer range 0 to 2;beginif clk'event and clk='1' thenif enable='1' thenif cnt=2 thencnt:=0;qout1<='1';elsecnt:=cnt+1;qout1<='0';end if;clk1<=qout1;end if;end if;end process;process(clk,enable)isvariable cnt:integer range 0 to 2;beginif clk'event and clk='0' then if enable='0' thenif cnt=2 thencnt:=0;qout2<='1';elsecnt:=cnt+1;qout2<='0';end if;end if;end if;end process;clk2<= qout1 or qout2;end behave;3:仿真波形:图(1)clk1为1:2占空比、clk2为1:3的占空比:4:结果分析:为了实现三分频,必需保证输出波形周期是原信号周期的三倍。
基于EDA的数控分频器的设计

基于EDA的数控分频器的设计
张雨沐
【期刊名称】《科技信息》
【年(卷),期】2011(000)036
【摘要】本设计利用MAX+plusII的原理图、VHDL两种不同的设计方式设计了一种数控分频器,最后利用ALTERA公司的FLEX10K系列EPF10K10LC84-4芯片来实现.
【总页数】1页(P136)
【作者】张雨沐
【作者单位】广东技术师范学院天河学院
【正文语种】中文
【相关文献】
1.基于EP2C35F672C8的数控分频器设计 [J], 刘德方;邓明;陈静;李怀敏
2.基于FPGA的通用数控分频器的设计与实现 [J], 张建妮;陆晓燕
3.基于EDA技术的数控分频器设计 [J], 韩丽英
4.基于EDA技术的数控分频器设计 [J], 韩丽英
5.基于VHDL的数控分频器设计及应用 [J], 郭海青
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
专业班级:
学号:姓名:
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;
六、实验仿真、结果及分析
<一>实验仿真:
根据以上程序可知,给定预置值的波形如下:
从而,完成分频后的波形图如下:
<二> 实验结果与分析:
实验仿真结果如以上波形图;给定时钟信号为200MHz,调整预置值D端的输入为十六进制,如以上输入33、55、99、AA、BB、CE,由编写的程序所知,其所要完成的计数器终态值为‘11111111’,其进制为预置值到终态值之间的范围,所要完成的分频就是按这个倍数进行。
也就是说,当预置值给出了之后,计数器开始计数,完成从所给预置值逐步加‘1’至终态值,之后进位端进‘1’,然后接着执行以下功能,CNT2端因FULL上升为高电平,D触发器输出取反,FOUT的输出波形与CNT2输出的波形一样,即CNT2输出为‘1’,FOUT 输出为‘1’,CNT2输出为‘0’,FOUT输出为零,经过这样一个变换,FOUT的波形的一个周期是所给信号的倍数关系。
如上图波形,输出波形的频率与所给的波形频率之间的关系即验证了以上分析。
从而,可以说明:实验结果是正确的,也就达到了此次实验的目的。