EDA分频器实验教案
- 格式:doc
- 大小:42.00 KB
- 文档页数:2
图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课程设计设计题目: 竞赛抢答器姓名:刘云龙学号:2010508140班级:10级2班专业:电子信息院系:信息科学与技术学院指导老师:田敏实验日期:2013 年 1 月13 日一、前言 (2)1.1课程设计的意义 (2)1.2 VHDL语言简介 (2)二、方案选择及原理分析 (3)2.1 通用可控分频器硬件方案选择 (3)2.2 通用可控分频器原理分析 (3)2.2.1 偶数分频器 (3)2.2.2奇数分频器 (4)三、软件设计 (5)3.1系统分析 (5)3.2系统的结构和模块划分 (5)3.2.1固定数值分频模块 (6)3.2.2按键和显示模块 (7)3.2.3占空比和分频系数可控分频模块 (7)3.3 可控分频的实现 (8)四、软硬件的系统测试 (8)五、心得体会 (8)附录 (9)参考文献 (16)一、前言分频器是数字系统设计中的一种基本电路,我们往往需要通过分频器得到我们所需要的时钟频率。
在实际设计中我们经常用到的为整数分频,有时要求等占空比,有时又要求非等占空比。
在同一个设计中有时要求多种形式的分频,通常由计数器或计数器的级联结构构成各种形式的任意占空比偶数分频及非等占空比的奇数分频,实现起来比较简单,对于等占空比的奇数分频以及可控的分频实现起来会较为困难。
本文利用VHDL硬件描述语言,使用Altera公司的FPGA芯片,设计了一种能够满足上述要求,而且较为通用的可控分频器。
只需在分频器的输入端用按键输入相应的分频系数,就可以得到所需的频率。
1.1课程设计的意义随着电子技术的高速发展,FPGA/CPLD以其高速、高可靠性、串并行工作方式等突出优点在电子设计中受到广泛的应用,而且代表着未来EDA设计的方向。
FPGA/CPLD的设计采用了高级语言,如VHDL语言AHDL语言等,进一步打破了软件与硬件之间的界限,缩短了产品的开发周期。
所以采用先进的FPGA/CPLD取代传统的标准集成电路、接口电路已成为电子技术发展的必然趋势。
实验三数控分频器设计【实验目的】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。
实验报告课程名称CPU设计实验项目实验一多级分频器图形设计实验仪器LP-2900 FPGA实验装置系别计算机科学与技术专业计算机科学与技术班级/学号计科1206/学生姓名实验日期 2014/05/20 成绩指导教师胡信裕实验一多级分频器图形设计一、实验目的1.学习使用QUARTUSⅡ图形编辑器,熟悉一般的图形编辑方法,通过本实验设计输入,了解和掌握图形设计的一般原理和方法。
2.学习使用QUARTUSⅡ波形编辑器, 熟悉一般的波形编辑方法,通过本实验设计输入,了解和掌握仿真波形文件设计的一般原理和方法。
3.熟悉和掌握QUARTUSⅡ的编译、仿真操作。
4.进一步熟悉应用图形编辑方法,了解层次化设计原理,通过本实验设计输入,掌握自顶向下、自底向上设计方法及各层图形文件的编译、仿真。
二、实验器材微机系统、LP-2900 FPGA实验装置、QUARTUSⅡ。
三、实验内容(一)设计要求1.功能要求:分频器输入频率为10 MHz,输出频率为1 Hz。
2.分频器顶层图形文件设计、例化模块图形文件设计。
3.仿真测试波形文件设计及功能验证。
(二)实验步骤1.上机,学习掌握QUARTUSⅡ工具软件的操作及层次化图形设计输入方法。
2.建立一个设计项目文件夹(Ex1),建立底层文件(counter_n10.bsf)顶层图形设计文件(Ex1.bsf),绘制各层原理图。
3.建立各子模块图形符号,更新顶层设计文件。
4.编译、纠错,完成各层图形文件设计。
5.设计各层图形文件的仿真测试波形文件。
6.完成仿真测试并对各层图形设计文件进行纠错,直至全部功能正确实现。
7.保存设计文件,完成实验报告。
(三)实验设计1.顶层项目设计及仿真:所谓分频器其实就是通过计时器的作用,将频率转换(通常为高频转换为低频),所以只需做一个计时器每隔一定的时间输出一个正脉冲即可。
我们分析到输入频率为10MHz=107,输出频率为1Hz,如果使用十六进制的计数器,使得计算比较复杂,电路也变得复杂,这里我们做一个十进制的加法计数器,那么要完成上述功能,只需要7个这样的10进制计数器即可。
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。
三、实验效果分析(包过仪器设备等使用效果)三、实验效果分析:①八分频,十一分频器的程序主要包括两部分,一是先设定好计数的位数,让计数器计数,当计数满时产生溢出,使溢出标志位为高电平;二是当溢出标志位为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技术与实验实验项目名称:简单分频时序逻辑电路设计实验时间:班级:通信091 姓名:Jxairy 学号:实验目的:1.掌握基本组合逻辑电路的实现方法。
2.初步了解分频时序逻辑电路的生成方法。
实验环境:Windows 7、max+plusⅡ10等。
实验内容:1.学习Verilog HDL 设计课件。
2.同步置数、同步清零计数器的文本设计过程及其仿真。
3.作clk_in的2分频clk_out,要求输出时钟的相位与课件1/2分频器的输出正好相反。
实验过程:一、同步置数、同步清零计数器实验的设计和仿真:(1)新建文本:选择菜单File下的New,出现如图4.1所示的对话框,在框中选中“Text Editorfile”,按“OK”按钮,即选中了文本编辑方式。
(2)另存为Verilog编辑文件,如图4.2所示。
(3)在编辑窗口中输入程序,如图4.3所示。
图4.1 新建文本图4.2 另存为.V编辑文件(4)设置当前文本:在MAX+PLUS II中,在编译一个项目前,必须确定一个设计文件作为当前项目。
按下列步骤确定项目名:在File菜单中选择Project 中的Name选项,将出现Project Name 对话框:在Files 框内,选择当前的设计文件。
选择“OK”。
如图4.4所示。
图4.3 计数器代码图4.4 设置当前仿真的文本设计(5)打开编译器窗口:在MAX—plusⅡ菜单内选择Compiler 项,即出现如图4.5的编译器窗口。
图4.5 编译器窗口选择Start即可开始编译,MAX+PLUS II编译器将检查项目是否有错,并对项目进行逻辑综合,然后配置到一个Altera 器件中,同时将产生报告文件、编程文件和用于时间仿真用的输出文件。
(6)建立波形编辑文件:选择菜单File下的New选项,在出现的New对话框中选择“Waveform Editor File”,单击OK后将出现波形编辑器子窗口。
实验三:整数分频器的设计
一实验目的
了解利用类属设计可配置的重用设计技术。
二实验原理
利用类属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模式的选择和引脚的配置一定要合理
六实验报告
简述实验过程,将实验项目分析设计,仿真和测试写入实验报告。