欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    [毕业设计精品]基于VHDL的12位十进制数字频率计的设计仿真.doc

    • 资源ID:4146859       资源大小:438.50KB        全文页数:10页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    [毕业设计精品]基于VHDL的12位十进制数字频率计的设计仿真.doc

    基于VHDL的12位十进制数字频率计的设计仿真一、功能与要求:该计数器的功能:对被测试信号进行计数,在1秒定时结束后,将计数器结果送锁存器锁存,同时将计数器清零,为下一次采样测量做好准备。要求如下:1.用VHDL完成12位十进制数字频率计的设计及仿真。2.频率测量范围:1Hz10KHz,分成两个频段,即1999Hz,1KHz10KHz,用三位数码管显示测量频率,用LED显示表示单位,如亮绿灯表示Hz,亮红灯表示KHz。3.具有自动校验和测量两种功能,即能用标准时钟校验、测量精度。4.具有超量程报警功能,在超出目前量程档的测量范围时,发出灯光和音响信号。二、设计思路图2.1是频率计数器的原理图。图2.1频率计数器的原理图1、基本原理:计算单位时间内待测信号的脉冲个数,各模块设计成process。测量/校验选择模块(test_meas)测频控制信号发生器(二分频)(clk_process)计数器模块(cnt_process)送存选择、报警模块(tostore_process)锁存模块(store_process)扫描显示模块(cnt3_process,bus_process, disp_process)2、各模块功能图2.2测量校验选择如图2.2为测量/校验选择模块,该模块的信号如下:输入信号:选择信号selet,被测信号meas,测试信号test;输出信号:CP1。当selet=0时,为测量状态,CP1=meas;当selet=1时,为校验状态,CP1=test。校验与测量共用一个电路,只是被测信号CP1不同而已。图2.3测频控制信号发生器(二分频)如图2.3为测频控制信号发生器(二分频),该模块的信号如下:输入信号:1HZ时钟信号;输出信号:1秒定时信号(周期为2秒)。图2.4计数器、送存选择、报警模块1、如图2.4为计数器、送存选择、报警模块,模块的功能如下:设置:量程档控制开关K,单位显示信号Y,当K=0时,为1999Hz量程档,数码管显示的数值为被测信号频率值,unit显示绿色,即单位为Hz;当K=1时,为1KHz10KHz量程档􀂙被测信号频率值为数码管显示的数值乘1000,unit显示红色,即单位为KHz。2、其中四级十进制计数器模块(带进位C)模块功能如下:输入信号:RD、CP,用于计数开始、清零、锁存输出信号:Q4Q1设置超出量程档测量范围示警信号alert。若被测信号频率小于1KHz(K=0),则计数器只进行三级十进制计数,最大显示值为999.Hz;如果被测信号频率超过此范围,示警信号驱动灯光、扬声器报警;若被测信号为1KHz10KHz(K=1),计数器进行四位十进制计数,取高三位显示,最大显示值为9.99KHz,如果被测信号频率超过此范围,报警。3、送存选择、报警电路状态表如表2.1。表2.1送存选择、报警电路状态表图2.5锁存,扫描显示模块图2.5为锁存、扫描显示模块,该模块功能如下:锁存器输入信号:D3D1,LD;输出信号:Q3Q1 ,小数点单位显示unit。图2.6扫描显示电路如如2.6扫描显示电路,该模块包含两个模块:七段显示译码器电路(DEC_LED);分时总线切换电路(SCAN)。三、原理图说明图3.1频率计显示原理图如图3.1,输入有扫描时钟clkscan,分频时钟clk1hz,单位选择键K,被测信号meas,测试信号test,测试校验选择键sel。输出有数码管信号led,数码管选择信号ms123,报警信号alert,单位显示信号unit。四、源代码说明-实体声明library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity dig_frq is Port ( clk1hz : in STD_LOGIC; clkscan : in std_logic; test : in STD_LOGIC; meas : in STD_LOGIC; sel : in STD_LOGIC; k : in STD_LOGIC; alert : out STD_LOGIC; unit : out STD_LOGIC; ms123 : out STD_LOGIC_VECTOR (2 downto 1); led : out STD_LOGIC_VECTOR (8 downto 1);end dig_frq;-结构体说明architecture Behavioral of dig_frq issignal cp1:std_logic;signal clk05hz:std_logic:='0'signal cp:std_logic;signal rd:std_logic:='1'signal c:std_logic;signal q4,q3,q2,q1:std_logic_vector(4 downto 1):="0000"signal load:std_logic:='0'signal d3,d2,d1:std_logic_vector(4 downto 1):="0000"signal data3,data2,data1:std_logic_vector(4 downto 1):="0000"signal disp:std_logic_vector(4 downto 1):="0000" signal ms123_s:STD_LOGIC_VECTOR (2 downto 1);begin-时钟电路,1hz信号二分频产生0.5hz信号,1s高电平,1s低电平clk_process:process(clk1hz) beginif(clk1hz'event and clk1hz='1')thenclk05hz<=not clk05hz;end if;end process;-测试、校验选择模块test_meas:process(sel,meas,test)beginif(sel='1')thensel为1时cp1为测试信号cp1<=meas;elsesel为0时cp1为校验信号cp1<=test;end if;end process;-锁存的加载信号load,当分频信号clk05hz上升沿时有效load<=not clk05hz;cp<=clk05hz and cp1;-计数清零信号rd,当分频信号clk05hz为0时有效rd<=clk05hz;-四位bcd计数电路cnt_process:process(cp,rd)variable q4_s,q3_s,q2_s,q1_s:integer range 0 to 9;variable c_s:integer range 0 to 1;beginif(rd='0')thenq4_s:=0;q3_s:=0;q2_s:=0;q1_s:=0;c_s:=0;elsif(cp'event and cp='1')thenif(q4_s=9 and q3_s=9 and q2_s=9 and q1_s=9 and c_s=1)thenq4_s:=0;q3_s:=0;q2_s:=0;q1_s:=0;c_s:=0;elsif(q4_s=9 and q3_s=9 and q2_s=9 and q1_s=9)thenq4_s:=0;q3_s:=0;q2_s:=0;q1_s:=0;c_s:=1;elsif(q3_s=9 and q2_s=9 and q1_s=9)thenq4_s:=q4_s+1;q3_s:=0;q2_s:=0;q1_s:=0;elsif(q2_s=9 and q1_s=9)thenq3_s:=q3_s+1;q2_s:=0;q1_s:=0;elsif(q1_s=9)thenq2_s:=q2_s+1;q1_s:=0;elseq1_s:=q1_s+1;end if;end if;q4<=conv_std_logic_vector(q4_s,4);q3<=conv_std_logic_vector(q3_s,4);q2<=conv_std_logic_vector(q2_s,4);q1<=conv_std_logic_vector(q1_s,4);if(c_s=0)thenc<='0'else c<='1'end if;end process;-送锁存电路tostore_process:process(q4,q3,q2,q1,c,k)beginif(k='0')then-当计数单位选择k为0时,输出计数器的低三位d3<=q3;d2<=q2;d1<=q1;if(q4>"0000" or c>'0')then-此时,当计数超过三位bcd数时,报警信号置1alert<='1'elsealert<='0'end if;elsif(k='1')then-当计数单位选择k为1时,输出计数器的高三位d3<=q4;d2<=q3;d1<=q2;if(c>'0')then-此时,当计数超过四位bcd数时,报警信号置1alert<='1'else alert<='0'end if;end if;end process;-锁存电路store_process:process(load,d1,d2,d3,k)beginif(load'event and load='1')then-加载信号load下降沿时,锁存数据data3<=d3;data2<=d2;data1<=d1;if(k='0')then-当单位选择键K为0时,单位unit置0,显示绿色unit<='0'else-当单位选择键K为1时,单位unit置1,显示红色unit<='1'end if;end if;end process;-计数到3的计数器,产生数码管选择信号cnt3_process:process(clkscan)variable cnt:integer range 0 to 2:=0;beginif(clkscan'event and clkscan='1')thenif(cnt=2)thencnt:=0;elsecnt:=cnt+1;end if;end if;待添加的隐藏文字内容3ms123_s<=conv_std_logic_vector(cnt,2);end process;-数码管信号选择电路bus_process:process(data3,data2,data1,clkscan,ms123_s)beginif(clkscan'event and clkscan='1')thencase ms123_s iswhen "00"=> disp<=data2;when "01"=> disp<=data3;when "10"=> disp<=data1;when others=> disp<=data1;end case;end if;end process;ms123<=ms123_s;-四八译码电路disp_process:process(disp,k,ms123_s)begincase disp iswhen "0000"=>led<="00111111"when "0001"=>led<="00000110"when "0010"=>led<="01011011"when "0011"=>led<="01001111"when "0100"=>led<="01100110"when "0101"=>led<="01101101"when "0110"=>led<="01111101"when "0111"=>led<="00000111"when "1000"=>led<="01111111"when "1001"=>led<="01101111"when others=>led<="00111111"end case;if(ms123_s="00" and k='0')thenled(8)<='1'elsif(ms123_s="10" and k='1')thenled(8)<='1'else led(8)<='0'end if;end process;end Behavioral;五、仿真结果及说明1、二分频电路仿真结果:图5.1clk1hz一个时钟产生一个clk05hz电平,clk05hz电平高低交替。2、测试校验选择电路图5.2sel为0时,cp1为测试信号meas,sel为1时,cp1为校验信号test。3、控制电路图5.3当clk05hz为1,被计数信号cp为cp1,当clk05hz为0,被计数信号cp为0;当clk05hz为1,加载信号load为0,计数清零信号为1,当clk05hz为0,加载信号load为1,计数清零信号为0。4、四位bcd计数电路图5.4当清零信号rd为0时,输出信号q4,q3,q2,q1置零,当清零信号rd为1时,q4,q3,q2,q1为cp的计数值。5、送锁存,报警模块图5.5当键K为0时,对bcd计数的低三位输出,当计数超出999时,报警信号输出为1。图5.6当键K为1时,对bcd计数的高三位输出,当计数未超出9999时,报警信号输出为0。6、锁存电路图5.7当键K为0时,对bcd计数的低三位锁存;当加载键load为1时,进行锁存。7、显示电路图5.8ms123为0,1,2时分别显示个位,十位,百位,当单位选择键k为1时,单位显示unit为 1(红灯),且,百位数据DB高位dot位为1。

    注意事项

    本文([毕业设计精品]基于VHDL的12位十进制数字频率计的设计仿真.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开