ImageVerifierCode 换一换
格式:DOC , 页数:20 ,大小:222.50KB ,
资源ID:9623436      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/9623436.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(基于FPGA的数字频率计设计报告.doc)为本站上传会员【鼓***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

基于FPGA的数字频率计设计报告.doc

1、 电子技术综合试验实验报告 班级:测控一班 学号:2907101002 姓名:李大帅 指导老师:李颖 基于FPGA的数字频率计设计报告 一、 系统整体设计 设计要求: 1、被测输入信号:方波 2、测试频率范围为:10Hz~100MHz 3、量程分为三档:第一档:闸门时间为1S时,最大读数为999.999KHz 第二档:闸门时间为0.1S时,最大读数为9999.99KHz

2、第三档:闸门时间为0.01S时,最大读数为99999.9KHz。 4、显示工作方式:a、用六位BCD七段数码管显示读数。 b、采用记忆显示方法 c、实现对高位无意义零的消隐。 系统设计原理: 所谓“频率”,就是周期性信号在单位时间(1秒)内变化的次数。若在一定的时间间隔T内计数,计得某周期性信号的重复变化次数为N,则该信号的频率可表达为:f = N / T . 基于这一原理我们可以使用单位时间内对被测信号进行计数的方法求得对该信号的频率测量,具体实现过程简述如下: 首先,将被测信号①(方波)

3、加到闸门的输入端。由一个高稳定的石英振荡器和一系列数字分频器组成了时基信号发生器,它输出时间基准(或频率基准)信号③去控制门控电路形成门控信号④,门控信号的作用时间T是非常准确的(由石英振荡器决定)。门控信号控制闸门的开与闭,只有在闸门开通的时间内,方波脉冲②才能通过闸门成为被计数的脉冲⑤由计数器计数。 闸门开通的时间称为闸门时间,其长度等于门控信号作用时间T。比如,时间基准信号的重复周期为1S,加到闸门的门控信号作用时间T亦准确地等于1S,即闸门的开通时间——“闸门时间”为1S。在这一段时间内,若计数器计得N=100000个数,根据公式f = N / T,那么被测频率就是100000Hz。

4、如果计数式频率计的显示器单位为“KHz”,则显示100.000KHz,即小数点定位在第三位。不难设想,若将闸门时间设为T=0.1S,则计数值为10000,这时,显示器的小数点只要根据闸门时间T的改变也随之自动往右移动一位(自动定位),那么,显示的结果为100.00Khz。在计数式数字频率计中,通过选择不同的闸门时间,可以改变频率计的测量范围和测量精度。 系统单元模块划分: 1)分频器,将产生用于计数控制的时钟分别为1HZ,10HZ,100HZ脉冲和1KHZ的用于七段显示数码管扫描显示的扫描信号。 2)闸门选择器,用于选择不同的闸门时间以及产生后续的小数点的显示位置。 3)门

5、控电路,产生用于计数的使能控制信号,清零信号以及锁存器锁存信号。 4)计数器,用于对输入的待测信号进行脉冲计数,计数输出。 5)锁存器,用于对计数器输出数据的锁存,便于后续译码显示电路的对数据进行记忆显示,同时避免计数器清零信号对数据产生影响。 6)译码显示,用于产生使七段显示数码管的扫描数字显示,小数点显示的输出信号,同时对高位的无意义零进行消隐。 二、 单元电路设计 1、 分频器: 该电路将产生四个不同频率的信号输出,因为电路板上给出了一个48MHZ的晶振,所以我们只需要对48MHZ的信号进行适当分频即可得到我们所需的四个不同频率的信号输出,我们设计一个输入为48MHZ,有

6、四个输出端分别为1HZ,10HZ和100HZ,1KHZ的分频器,原程序如下: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity fenpinqi is Port ( clk : in STD_LOGIC; clkout1 : out STD_LOGIC; clkout10 : out STD_LOGIC; clkout

7、100 : out STD_LOGIC; clkout1K : out STD_LOGIC); end fenpinqi; architecture Behavioral of fenpinqi is signal cnt1:integer range 1 to 24000000; signal cnt10:integer range 1 to 2400000; signal cnt100:integer range 1 to 240000; signal cnt1K:integer range 1 to 24000; signal c1:std_logic; si

8、gnal c2:std_logic; signal c3:std_logic; signal c4:std_logic; begin process(clk)is begin if clk'event and clk='1' then if cnt1<24000000 then --对cnt1进行计数,当cnt1未计满后对其进行加1 cnt1<=cnt1+1; elsif cnt1=24000000 then --cnt1计满后对其进行赋一,并且令c1进行翻转,然后将c1的值赋给clkout1 c1<=not

9、c1; --由于48MHZ的的信号,前一半的时候c1为0,则后一半是为1,就完成了对信号进行分频,产生了1HZ的信号 cnt1<=1; end if; end if; end process; process(clk)is begin if clk'event and clk='1' then --方法同上 if cnt10<2400000 then cnt10<=cnt10+1; elsif cnt10=2400000 then c2<=not c2; cnt10<=1;

10、end if; end if; end process; process(clk)is begin if clk'event and clk='1' then --方法同上 if cnt100<240000 then cnt100<=cnt100+1; elsif cnt100=240000 then c3<=not c3; cnt100<=1; end if; end if; end process; process(clk)is begin if c

11、lk'event and clk='1' then --方法同上 if cnt1K<24000000 then cnt1K<=cnt1K+1; elsif cnt1=24000 then c4<=not c4; cnt1K<=1; end if; end if; end process; clkout1<=c1; clkout10<=c2; clkout100<=c3; clkout1K<=c4; end Behavioral; 源文件编写成功后编译并生成图形文件符号如图: 仿真文件编写如下: LIB

12、RARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.all; USE ieee.numeric_std.ALL; ENTITY tbb_vhd IS END tbb_vhd; ARCHITECTURE behavior OF tbb_vhd IS COMPONENT fenpinqi PORT(clk : IN std_logic; clkout1 : OUT std_logic; clkout10 : OUT std_logic; clkout1

13、00 : OUT std_logic; clkout1K : OUT std_logic); END COMPONENT; SIGNAL clk : std_logic := '0'; SIGNAL clkout1 : std_logic; SIGNAL clkout10 : std_logic; SIGNAL clkout100 : std_logic; SIGNAL clkout1K : std_logic; BEGIN uut: fenpinqi PORT MAP(clk => clk, clkout1 => clkout1,

14、 clkout10 => clkout10, clkout100 => clkout100, clkout1K => clkout1K); tb : PROCESS BEGIN clk<='0'; wait for 10 ps; clk<='1'; wait for 10 ps; END PROCESS; END; 对该模块进行仿真结果如下: 有上图可知分频器工作正常,产生的个信号也没有毛刺,结果十分理想。 2、闸门选择器: 在这个模块中我们有四个输出端和六个输入端,其中四个输出端中有一个是频率输出端,是

15、通过三个闸门选择开关输入和三个输入频率决定的,另外三个输出端则是用来后面的小数点控制的,而六个输入端中的三个是上面分频器的三个输出1HZ,10HZ和100HZ,另外三个是电路板上的拨动开关,用来选择闸门,控制输出。其原程序和分析如下: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity SELE is Port ( SE1 : in STD_LOGIC; SE10

16、 in STD_LOGIC; SE100 : in STD_LOGIC; F1HZ : IN STD_LOGIC; F10HZ : IN STD_LOGIC; F100HZ :IN STD_LOGIC; FREF : out STD_LOGIC; DP1 : out STD_LOGIC; DP2 : out STD_LOGIC; DP3 : out STD_LOGIC); end SELE; a

17、rchitecture Behavioral of SELE is begin PROCESS(SE1,SE10,SE100) IS BEGIN IF SE1='1' AND SE10='0' AND SE100='0' THEN FREF<=F1HZ; --当闸门控制在第一档的时候,令输出端输出1HZ输入端的输入,小数点控制dp1有效,dp2,dp3无效 DP1<='0'; DP2<='1'; DP3<='1'; END IF; IF SE1='0' AND SE10='1' AND SE100='0' THEN

18、 FREF<=F10HZ; --第二档,输出为10HZ,dp2有效 DP1<='1'; DP2<='0'; DP3<='1'; END IF; IF SE1='0' AND SE10='0' AND SE100='1' THEN FREF<=F100HZ; --第三档,输出为100HZ,dp3有效 DP1<='1'; DP2<='1'; DP3<='0'; END IF; END PROCESS; end Behavioral; 源代码编写完成后保存并生成图形文件符号如图: 仿真

19、文件编写如下: LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.all; USE ieee.numeric_std.ALL; ENTITY TTB_vhd IS END TTB_vhd; ARCHITECTURE behavior OF TTB_vhd IS COMPONENT SELE PORT(SE1 : IN std_logic; SE10 : IN std_logic; SE100 : IN std_logic; F1HZ : IN std_log

20、ic; F10HZ : IN std_logic; F100HZ : IN std_logic; FREF : OUT std_logic; DP1 : OUT std_logic; DP2 : OUT std_logic; DP3 : OUT std_logic); END COMPONENT; SIGNAL SE1 : std_logic := '1'; SIGNAL SE10 : std_logic := '0'; SIGNAL SE100 : std_logic := '0'; SIGNAL F1HZ :

21、 std_logic := '0'; SIGNAL F10HZ : std_logic := '0'; SIGNAL F100HZ : std_logic := '0'; SIGNAL FREF : std_logic; SIGNAL DP1 : std_logic; SIGNAL DP2 : std_logic; SIGNAL DP3 : std_logic; BEGIN uut: SELE PORT MAP( SE1 => SE1, SE10 => SE10, SE100 => SE100, F1HZ => F1HZ,

22、 F10HZ => F10HZ, F100HZ => F100HZ, FREF => FREF, DP1 => DP1, DP2 => DP2, DP3 => DP3); tb : PROCESS BEGIN F1HZ<='0';FREF<='0'; wait for 100 ns; F1HZ<='1';FREF<='1'; WAIT FOR 100 NS; END PROCESS; END; 仿真结果如图: 有仿真结果可知闸门选择器工作正常,能够准确输出我们所需的信号。 3、门控信号: 在此模块中有一

23、个输入端和两个输出端,输入端为上面的闸门选择器输出的频率,两个输出端分别为计数器是能控制信号(锁存器控制信号),和计数器清零信号。具体源程序即分析如下: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity CONTROLS is Port ( FREF : in STD_LOGIC; GAT : out STD_LOGIC; CLR : out S

24、TD_LOGIC); end CONTROLS; architecture Behavioral of CONTROLS is SIGNAL G1: STD_LOGIC:='0'; begin PROCESS(FREF) IS BEGIN IF FREF'EVENT AND FREF='1' THEN G1<=NOT G1; --该过程对时钟信号又一次进行分频,产生出半个周期时间为1的控制信号,作为计数使能,保证了时间的准确性 END IF; END PROCESS; PROCESS(FREF,G1) IS

25、BEGIN IF FREF='0' AND G1='0' THEN CLR<='1'; --该过程产生清零信号,即当使能信号为无效0同时时钟为0时,即在技术始终无效半个时钟时间后,对计数器清零 ELSE CLR<='0'; --清零信号高电平有效 END IF; END PROCESS; GAT<=G1; --将G1赋给gat输出端,它是计数器的使能信号同时也是锁存器的锁存信号 end Behavioral; 源文件编写完成后保存编译并生成图形文件符号如图: 仿真文件代码如下: LIBRARY ieee; USE

26、 ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.all; USE ieee.numeric_std.ALL; ENTITY TBCON_vhd IS END TBCON_vhd; ARCHITECTURE behavior OF TBCON_vhd IS COMPONENT CONTROLS PORT(FREF : IN std_logic; GAT : OUT std_logic; CLR : OUT std_logic); END COMPONENT; SIGNAL

27、FREF : std_logic := '0'; SIGNAL GAT : std_logic; SIGNAL CLR : std_logic; BEGIN uut: CONTROLS PORT MAP( FREF => FREF, GAT => GAT, CLR => CLR); tb : PROCESS BEGIN FREF<='0'; WAIT FOR 100 NS; FREF<='1'; WAIT FOR 100 NS; END PROCESS; END; 对上面的文件进行仿真,结果如下: 由上图的

28、仿真结果可知,控制电路工作正常,输出信号稳定,很理想。同时我们也可以看出来该模块对分频器的时钟输出的稳定性依赖十分严重,一旦分频器输出时钟有毛刺,该控制信号将会完全的无效,这也是为什么我知道上面的分频器设计不是最优的方案,却还是采用了上述方法的原因。 4、计数器: 该模块实现的功能是对输入信号脉冲的计数,并正确的输出结果和溢出。使用上面的门控信号产生的gat信号控制计数器的使能端,以实现计数器的定时计数。该模块是使用六个十进制计数器同步并联而成的,首先我们设计用于并联的十进制计数器,原程序如下: library IEEE; use IEEE.STD_LOGIC_1164.ALL;

29、 use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity CNT10 is Port ( CLK : in STD_LOGIC; CLR : in STD_LOGIC; ENA : in STD_LOGIC; CQ : out STD_LOGIC_VECTOR (3 downto 0); CO : out STD_LOGIC); end CNT10; architectur

30、e Behavioral of CNT10 is SIGNAL CQI: STD_LOGIC_VECTOR(3 DOWNTO 0):="0000"; --定义中间信号CQI,用于数据输出的循环计数 begin PROCESS(CLK,CLR) IS BEGIN IF CLR='1' THEN CQI<="0000"; --当CLR清零信号有效时使输出为0000,无效时进行下述操作 ELSIF CLK'EVENT AND CLK='1' THEN --对时钟进行计数 IF ENA='1' THEN --判断使能信号,有效则进行计数,否则不

31、作处理 IF CQI="1001" THEN CQI<="0000"; --数据0~9循环,计满后重新回到0 ELSE CQI<=CQI+'1'; END IF; END IF; END IF; END PROCESS; CO <= '1' when ena = '1' and cqi = 9 else '0'; --进位信号,最高位的仅为信号作为计数的溢出信号 CQ<=CQI; --当且仅当使能有效且计数为9时产生进位信号,进位信号1有效,同步并联时连高位的使能端 end Behavioral; 文件编

32、写完成后保存编译生成图形文件符号,如上图: 创建图形文件cnt6并按照下图进行连接,保存后编译生成图形文件符号如图: 仿真文件代码如下: LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.all; USE ieee.numeric_std.ALL; ENTITY TBCNT10_vhd IS END TBCNT10_vhd; ARCHITECTURE behavior OF TBCNT10_vhd IS COMPONENT CNT10 PORT(CLK : IN st

33、d_logic; CLR : IN std_logic; ENA : IN std_logic; CQ : OUT std_logic_vector(3 downto 0); CO : OUT std_logic); END COMPONENT; SIGNAL CLK : std_logic := '0'; SIGNAL CLR : std_logic := '0'; SIGNAL ENA : std_logic := '1'; SIGNAL CQ : std_logic_vector(3 downto 0); SIG

34、NAL CO : std_logic; BEGIN uut: CNT10 PORT MAP( CLK => CLK, CLR => CLR, ENA => ENA, CQ => CQ, CO => CO); tb : PROCESS BEGIN CLK<='0'; wait for 100 ns; CLK<='1'; WAIT FOR 100 NS; END PROCESS; END; 仿真结果如图: 如仿真结果我们可以看出,该模块运行正常,计数稳定,结果十分理想。 5、锁存器: 由于前面的计

35、数器的输出为六组四位二进制数和一个溢出信号,所以我们使用的锁存器也使用六个四位锁存器和一个一位锁存器。锁存器使用下降沿锁存,即当计数器的使能信号变为无效的一瞬间我们令锁存器将数据锁存。四位锁存器的原代码如下: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity LATCH4 is Port ( CLK : in STD_LOGIC; DIN : in STD_LOGIC_

36、VECTOR (3 downto 0); QOU : out STD_LOGIC_VECTOR (3 downto 0)); end LATCH4; architecture Behavioral of LATCH4 is begin PROCESS(CLK,DIN) IS BEGIN IF CLK'EVENT AND CLK='0' THEN --当时钟信号下降沿时,实现锁存 QOU<=DIN; END IF; END PROCESS; end Behavioral; 上述文件编写完成后

37、保存编译生成图形文件符号如图: 再编写一位锁存器,源程序代码如下: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity LATCH1 is Port ( CLK : in STD_LOGIC; DIN : in STD_LOGIC_VECTOR; QOU : out STD_LOGIC_VECTOR); end LATCH1; arch

38、itecture Behavioral of LATCH1 is begin PROCESS(CLK,DIN) IS BEGIN IF CLK'EVENT AND CLK='0' THEN --当时钟信号下降沿时,实现锁存 QOU<=DIN; END IF; END PROCESS; end Behavioral; 文件编写完成后保存编译生成图形文件符号,如图: 锁存完成后有六组四位二进制数和一个一位二进制数,所以我们队总线进行了合并,即将六组四位数合并成一个二十四位数,合并程序如下: library IEEE; u

39、se IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity ADVOCATES is Port ( S0 : in STD_LOGIC_VECTOR (3 downto 0); S1 : in STD_LOGIC_VECTOR (3 downto 0); S2 : in STD_LOGIC_VECTOR (3 downto 0); S

40、3 : in STD_LOGIC_VECTOR (3 downto 0); S4 : in STD_LOGIC_VECTOR (3 downto 0); S5 : in STD_LOGIC_VECTOR (3 downto 0); S6 : out STD_LOGIC_VECTOR (23 downto 0)); end ADVOCATES; architecture Behavioral of ADVOCATES is begin S6(23 DOWNTO 20)<=S0;

41、 --将总线的对应位进行连接 S6(19 DOWNTO 16)<=S1; S6(15 DOWNTO 12)<=S2; S6(11 DOWNTO 8)<=S3; S6(7 DOWNTO 4)<=S4; S6(3 DOWNTO 0)<=S5; end Behavioral; 文件编写完成后保存编译生成图形文件符号,如图: 创建该模块的顶层图形文件LAT.sch将上述个文件按照如图所示连接,保存编译生成图形文件符号如图: 该模块的输入输出简单,无需仿真。 6、译码显示: 该模块实现的是对锁存器锁存的数据进行处理并显示输出,以及小数点的不同闸门的输出显示,以及电路板上七段显

42、示译码管的扫描信号输出。其中对锁存数据的处理包括溢出有效时的数据消除,和对高位无意义零的自动消隐。首先我们编写小数点控制的源文件代码: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity POINTCON is Port ( SE1 : in STD_LOGIC; SE10 : in STD_LOGIC; SE100 : in STD_LOG

43、IC; SEL : in STD_LOGIC_VECTOR (2 downto 0); DP : out STD_LOGIC); end POINTCON; architecture Behavioral of POINTCON is begin PROCESS(SE1,SE10,SE100,SEL) IS BEGIN IF SE1='1' AND SE10='0' AND SE100='0' AND SEL="011" THEN DP<='0'; --当为第一档时,令第四位的数码管的小

44、数点点亮,其他的不亮 ELSIF SE1='0' AND SE10='1' AND SE100='0' AND SEL="010" THEN DP<='0'; --第二档时,第三位的数码管小数点点亮 ELSIF SE1='0' AND SE10='0' AND SE100='1' AND SEL="001" THEN DP<='0'; --第三档时,第二位的小数点点亮 ELSE DP<='1'; --不符合上述三档时,小数点全部消隐 END IF; END PROCESS; end Behaviora

45、l; 编写完成后保存编译生成图形文件符号如图: 再编写用于数码管扫描显示的的位选信号生成文件,其代码如下: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity CTRLS is Port ( CLK : in STD_LOGIC; SEL : out STD_LOGIC_VECTOR (2 downto 0)); end CTRLS; architec

46、ture Behavioral of CTRLS is SIGNAL CNT: STD_LOGIC_VECTOR(2 DOWNTO 0):="000"; begin PROCESS(CLK) IS BEGIN IF CLK'EVENT AND CLK='1' THEN --接入1KHZ的时钟信号,使CNT进行循环计数,从000到101 IF CNT=”101” THEN CNT<=”000”; --计满则清零,不满则加一 ELSE CNT<=CNT+’1’; END IF; END IF; END PROCESS;

47、 SEL<=CNT; --将CNT信号赋给SEL输出 end Behavioral; 文件编写完成后保存编译生成图形文件符号如图: 再编写使高位无意义零自动消隐功能的的文件,源程序代码如下: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity DSELE is Port ( DP1: IN STD_LOGIC; DP2: IN STD_LOGIC; DIN

48、 : in STD_LOGIC_VECTOR (23 downto 0); QOU : out STD_LOGIC_VECTOR (23 downto 0)); end DSELE; architecture Behavioral of DSELE is begin PROCESS(DP1,DP2,DIN) IS BEGIN IF DP1='0' AND DP2='1' THEN IF DIN(23 DOWNTO 20)="0000" THEN QOU(23 DOWNTO 20)<="1111"; QOU(1

49、9 DOWNTO 0)<=DIN(19 DOWNTO 0); END IF; IF DIN(23 DOWNTO 20)="0000" AND DIN(19 DOWNTO 16)="0000" THEN QOU(23 DOWNTO 20)<="1111"; QOU(19 DOWNTO 16)<="1111"; QOU(15 DOWNTO 0)<=DIN(15 DOWNTO 0); END IF; END IF; IF DP1='1' AND DP2='0' THEN IF DIN(23 DOWN

50、TO 20)="0000" THEN QOU(23 DOWNTO 20)<="1111"; QOU(19 DOWNTO 0)<=DIN(19 DOWNTO 0); END IF; IF DIN(23 DOWNTO 20)="0000" AND DIN(19 DOWNTO 16)="0000" THEN QOU(23 DOWNTO 20)<="1111"; QOU(19 DOWNTO 16)<="1111"; QOU(15 DOWNTO 0)<=DIN(15 DOWNTO 0); END IF;

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服