数控分频器的设计-四(精品文档)-共6页.pdf
上传人:音景****ka 上传时间:2024-09-11 格式:PDF 页数:5 大小:1.4MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

数控分频器的设计-四(精品文档)-共6页.pdf

数控分频器的设计-四(精品文档)-.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

题目数控分频器的设计一、实验目的1.设计实现一个根据不同的输入,将时钟信号进行分频2.掌握分频计数器类型模块的Verilog描述方法;3.学习设计仿真工具的使用方法;4.学习层次化设计方法;二、实验内容1.实现对时钟的2分频、4、8、和16分频。2.实现偶数分频器的设计。(8分频)3.实现对时钟的16分频设计。4.实现奇数分频的设计。三、实验原理数字分频器的功能就是在输入端给定不同数据时,将对输入的时钟信号有不同的分频比,数字分频器就是计数值可并行预置的加法计数器设计完成,方法就是将计数溢出位与预置数加载输入信号相接即可。四、实验步骤(1)启动QuartusII建立一个空白工程。(2)新建VHDL源程序文件输入程序代码并保存,进行综合编译,若在编译过程中出现错误,则找出并更正错误,直至成功为止。(3)建立波形仿真文件并进行功能仿真验证。五、实验结果1.仿真结果实现对信号时钟的2分频、4、8、和16分频(占空比50%)。结果如图一:图一2.对时钟的16分频占空比为1/16,结果如图二:图二3.奇数:3倍分频,仿真结果如图3:图三4.5分频仿真结果如图四:图四六、心得和体会这次的实验为数字分频器,基本原理老师已经在上课的时候讲的很清楚,这次刚开始综合时有错误,改完后波形仿真也进行的很顺利,这次试验又熟悉了QUARTUSII软件的使用,以后要多动手,多理解,争取对QUARTUSII熟练掌握。七、附录1、libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityzl_549isport(clk:instd_logic;clk_div2,clk_div4,clk_div8,clk_div16:outstd_logic);endzl_549;architecturedivofzl_549issignalcount:std_logic_vector(3downto0);beginprocess(clk)beginif(clk'eventandclk='1')thenif(count="1111")thencount<=(others=>'0');elsecount<=count+1;endif;endif;endprocess;clk_div2<=count(0);clk_div4<=count(1);clk_div8<=count(2);clk_div16<=count(3);enddiv;2、libraryieee;useieee.std_logic_1164.all;entityzl_549isport(clk:instd_logic;clk_div5:outstd_logic);endzl_549;architecturediv5ofzl_549issignalcount:integerrange0to6;signaltemp1,temp2:std_logic;beginprocess(clk)beginifrising_edge(clk)thenifcount=4thencount<=0;temp1<=nottemp1;elsecount<=count+1;endif;endif;iffalling_edge(clk)thenifcount=4thentemp2<=nottemp2;endif;endif;endprocess;clk_div5<=temp1xortemp2;enddiv5;3、libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityzl_549isport(clk:instd_logic;clk_div16:outstd_logic);endzl_549;architecturediv16ofzl_549issignalcount:std_logic_vector(3downto0);beginprocess(clk)beginif(clk'eventandclk='1')thenif(count="1111")thencount<=(others=>'0');elsecount<=count+1;endif;end