欢迎来到天天文库
浏览记录
ID:51428403
大小:146.00 KB
页数:7页
时间:2020-03-24
《频率计VHDL程序与仿真.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数字频率计VHDL程序与仿真一、功能:频率计。具有4位显示,能自动根据7位十进制计数的结果,自动选择有效数据的高4位进行动态显示。小数点表示是千位,即KHz。二、源程序及各模块和主要语句的功能libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitypljisport(start:instd_logic;--复位信号clk:instd_logic;--系统时钟clk1:instd_logic;--被测信号yy1
2、:outstd_logic_vector(7downto0);--八段码w1:outstd_logic_vector(3downto0));--数码管位选信号endplj;architecturebehavofPLjissignalb1,b2,b3,b4,b5,b6,b7:std_logic_vector(3downto0);--十进制计数器signalbcd:std_logic_vector(3downto0);--BCD码寄存器signalq:integerrange0to49999999;--秒分
3、频系数signalqq:integerrange0to499999;--动态扫描分频系数signalen,bclk:std_logic;--使能信号,有效被测信号signalsss:std_logic_vector(3downto0);--小数点signalbcd0,bcd1,bcd2,bcd3:std_logic_vector(3downto0);--寄存7位十位计数器中有效的高4位数据beginsecond:process(clk)--此进程产生一个持续时间为一秒的的闸门信号beginifstart
4、='1'thenq<=0;elsifclk'eventandclk='1'thenifq<49999999thenq<=q+1;elseq<=49999999;endif;endif;ifq<49999999andstart='0'thenen<='1';elseen<='0';endif;endprocess;and2:process(en,clk1)--此进程得到7位十进制计数器的计数脉冲beginbclk<=clk1anden;endprocess;com:process(start,bclk)-
5、-此进程完成对被测信号计脉冲数beginifstart='1'then--复位b1<="0000";b2<="0000";b3<="0000";b4<="0000";b5<="0000";b6<="0000";b7<="0000";elsifbclk'eventandbclk='1'thenifb1="1001"thenb1<="0000";--此IF语句完成个位十进制计数ifb2="1001"thenb2<="0000";--此IF语句完成百位十进制计数ifb3="1001"thenb3<="0000
6、";--此IF语句完成千位十进制计数ifb4="1001"thenb4<="0000";--此IF语句完成万位十进制计数ifb5="1001"THENb5<="0000";--此IF语句完成十万位十进制计数ifb6="1001"thenb6<="0000";--此IF语句完成百万位十进制计数ifb7="1001"thenb7<="0000";--此IF语句完成千万位十进制计数elseb7<=b7+1;endif;elseb6<=b6+1;endif;elseb5<=b5+1;endif;elseb4<=
7、b4+1;endif;elseb3<=b3+1;endif;elseb2<=b2+1;endif;elseb1<=b1+1;endif;endif;endprocess;process(clk)--此进程把7位十进制计数器有效的高4位数据送入bcd0~3;并得到小数点信息beginifrising_edge(clk)thenifen='0'thenifb7>"0000"thenbcd3<=b7;bcd2<=b6;bcd1<=b5;bcd0<=b4;sss<="1110";elsifb6>"0000"th
8、enbcd3<=b6;bcd2<=b5;bcd1<=b4;bcd0<=b3;sss<="1101";elsifb5>"0000"thenbcd3<=b5;bcd2<=b4;bcd1<=b3;bcd0<=b2;sss<="1011";elsebcd3<=b4;bcd2<=b3;bcd1<=b2;bcd0<=b1;sss<="1111";endif;endif;endif;endprocess;weixuan:process(clk)--此进程
此文档下载收益归作者所有