版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第9章 显示电路设计 本章重点讨论输出结果在数码管上的显示。电子线路输出一般都是用灯的亮与不亮来表示输出的高低电平,这种显示不直观。数码管显示能够更加直观、形象的描述现象。 9.1 两输入或门输出显示两输入或门是数字逻辑电路中最基本的门电路,电路图如下: 真值表:aby000011101111两输入或门的程序设计可以有多种方式设计。输出结果主要通过38译码器译码转换为7段显示码的输入,其电路程序设计如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;-*ENTITY or1 ISPORT(a,b
2、:IN STD_LOGIC; out_c: out std_logic_vector(7 downto 0); out_38: out std_logic_vector(2 downto 0) );END or1;-*architecture rtl OF or1 ISsignal y:std_logic;begin y<=a OR b; out_38 <= "000" out_c <= "00111111" when y='0' else "00000110" ;END rtl;波形图如下:9.2
3、3进制计数器 上一章讲到过3进制计数器的设计原理,按照一般的显示需要两个灯显示结果,在这里我们用一个数码管显示。让读者能够更加直观的理解3进制计数器的记数过程。其程序设计如下: 顶层文件设计:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dsp3 ISPORT(enable:IN STD_LOGIC; clk:IN STD_LOGIC; out_38: out std_logic_vector(2 downto 0); segment:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) );END dsp3;ARCHITECTUR
4、E rt1 OF dsp3 ISCOMPONENT count3PORT(enable:IN STD_LOGIC; clk:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END COMPONENT;SIGNAL q:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINU0:count3 PORT MAP(enable,clk,q);out_38 <= "000"segment <= "00111111" when q="00" else "000
5、00110" when q="01" else "1011011"END rt1;再该程序中用COMPONENT命令调用了3进制计数器的设计程序,其程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count3 ISPORT( enable:IN STD_LOGIC; clk:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END count3;ARCHITECTURE rt1
6、 OF count3 ISSIGNAL q_tmp:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINprocess(clk)beginIF(clk'event and clk='1')then if(enable='1')then if(q_tmp="10")then q_tmp<=(others=>'0'); else q_tmp<=q_tmp+1; end if; end if;end if;q<=q_tmp;end process;end rt1;波形图如下:9.3 2
7、4进制计数器 24进制计数器显示和3进制计数器的显示思路一样。不同之处在于前者需要两个数码管,在设计时必须考虑选择数码管。在任何自顶向下的VHDL设计描述中,设计人员常常将整个设计的系统划分为几个模块,然后采用结构描述方式对整个系统进行描述。9.3.1 顶层结构体的VHDL源代码24进制计数器显示程序设计过程中就包含了记数部分、显示部分。另外为了使记数准确,我们必须要获得稳定的频率,即还包括稳定的频率源部分。下面我们给出顶层结构体的VHDL源代码。其中3个模块以元件的形式给出,首先在结构体的说明部分进行元件说明,然后在结构体中进行例化调用。同时在结构体的说明部分定义了中间信号,主要用来在模块之
8、间传递信息。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY clock ISPORT( clk:IN STD_LOGIC; enable:IN STD_LOGIC; sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); segment:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END clock;ARCHITECTURE rt1 OF clock ISCOMPONENT clk_div1000PORT(clk:IN STD_LOGIC;
9、clk_div:out STD_LOGIC);end component;component count24PORT( enable:IN STD_LOGIC; clk0:IN STD_LOGIC; qh:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); ql:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end component;component displayPORT( clk:IN STD_LOGIC; qh:IN STD_LOGIC_VECTOR(3 DOWNTO 0); ql:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
10、sel:out STD_LOGIC_VECTOR(2 DOWNTO 0); segment:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);end component; signal qh: STD_LOGIC_VECTOR(3 DOWNTO 0); signal ql: STD_LOGIC_VECTOR(3 DOWNTO 0); signal clk0:STD_LOGIC;beginu0:clk_div1000 PORT MAP(clk,clk0);u1:count24 PORT MAP(enable,clk0,qh,ql);u2:display PORT MAP(clk,
11、qh,ql,sel,segment);end rt1; 9.3.2 频率源VHDL源代码 为了获得的稳定的频率源,我们才用1000赫兹频率作为输入,用1000进制计数器分频得到1赫兹频率。其程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY clk_div1000 ISPORT(clk:IN STD_LOGIC; clk_div:out STD_LOGIC);END clk_div1000;ARCHITECTURE rt1 OF clk_div1000 ISSIGNAL q_t
12、mp:integer range 0 to 999;BEGINprocess(clk)beginIF(clk'event and clk='1')then if(q_tmp=999)then q_tmp<=0; else q_tmp<=q_tmp+1; end if;end if;end process;process(clk)beginIF(clk'event and clk='1')then if(q_tmp=999)then clk_div<='1' else clk_div<='0'
13、 end if;end if;end process;end rt1;9.3.3 计数部分VHDL源代码 24进制计数器的计数主要是24进制,在这里我们把24分为个位和十位设计。其VHDL源代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count24 ISPORT( enable:IN STD_LOGIC; clk0:IN STD_LOGIC; -cout:out STD_LOGIC; qh:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); ql:OUT
14、 STD_LOGIC_VECTOR(3 DOWNTO 0);END count24;ARCHITECTURE rt1 OF count24 ISSIGNAL qh_temp,ql_temp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINprocess(clk0)beginIF(clk0'event and clk0='1')thenif (enable='1') thenif (qh_temp="0010" and ql_temp="0011") thenqh_temp<="0
15、000"ql_temp<="0000"elseif (ql_temp="1001") thenql_temp<="0000"qh_temp<=qh_temp+1;elseql_temp<=ql_temp+1;end if;end if;end if;end if;qh<=qh_temp;ql<=ql_temp;end process;end rt1;9.3.4 显示模块VHDL源代码 显示模块的输入信号主要来自于计数部分的输出信息。在输出信号中,我们采用循环点亮两个LED七段显示数码管显示
16、输出。我们通过信号来进行2个LED七段显示数码的选择,从而将输出信号送到相应的LED七段显示数码上完成24进制计数器的结果显示。模块框图如下:从图中可以看出,显示模块有四个部分构成:八进制计数器、计时位选择电路、七段显示译码电路。在外部时钟信号clk的作用下,8进制计数器的输出从000到111按顺序循环变化,输出信号为sel。信号sel作为计时位选择电路的选择信号,用来选择对应位的数据并将其转换为四位位矢量。最后将计时位选择电路的输出信号q送到七段显示译码电路的输入端口,将其转换成用来点燃LED七段显示数码管的segment信号。下面描述显示模块中的四个子电路,然后描述其总体功能。8进制计数器
17、VHDL源代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count8 ISPORT( clk:IN STD_LOGIC; sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END count8;ARCHITECTURE rt1 OF count8 ISSIGNAL sel_tmp:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINprocess(clk)beginIF(clk'event and clk='1'
18、)then if(sel_tmp="111")then sel_tmp<=(others=>'0'); else sel_tmp<=sel_tmp+1; end if;end if;sel<=sel_tmp;end process;end rt1; 计时位选择电路的功能是根据8进制计数器的计数输出的选择信号来选择对应计时显示位的计时数据,作为送致七段显示译码电路的输入数据。在计时位选择电路中我们要将输入数据都转化成4位宽度的数据。其VHDL源代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;E
19、NTITY time_choose ISPORT(sel:IN STD_LOGIC_VECTOR(2 DOWNTO 0); qh:IN STD_LOGIC_VECTOR(3 DOWNTO 0); ql:IN STD_LOGIC_VECTOR(3 DOWNTO 0); q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END time_choose;ARCHITECTURE rt1 OF time_choose ISBEGINPROCESS(sel,qh,ql)BEGINCASE sel IS WHEN "000"=>q<=ql; WHEN &
20、quot;001"=>q<=qh; WHEN OTHERS=>q<="XXXX"END CASE;END PROCESS;END rt1;七段显示译码电路的功能是将显示的数据转换成用来点燃LED七段显示数码管的segment信号。其VHDL源代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY seg7 ISPORT(q:IN STD_LOGIC_VECTOR(3 DOWNTO 0); segment:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END seg7;AR
21、CHITECTURE rt1 OF seg7 ISBEGINPROCESS(q)BEGINCASE q IS WHEN "0000"=>segment<="0111111" WHEN "0001"=>segment<="0000110" WHEN "0010"=>segment<="1011011" WHEN "0011"=>segment<="1001111" WHEN "01
22、00"=>segment<="1100110" WHEN "0101"=>segment<="1101101" WHEN "0110"=>segment<="1111101" WHEN "0111"=>segment<="0100111" WHEN "1000"=>segment<="1111111" WHEN "1001"=&
23、gt;segment<="1101111" WHEN OTHERS=>segment<="XXXXXXX"END CASE;END PROCESS;END rt1;下面对24进制计数器显示模块总体功能描述。在描述24进制计数器显示模块时,我们以引用元件的形式来调用以上描述的子电路。其VHDL源代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY display ISPORT( clk:IN STD_LOGIC; qh:IN STD_LOGIC_VECTOR(3 DOWNTO 0); ql:IN STD_LOGIC_VECTOR(3 DOWNTO 0); sel:OUT STD_LOGIC_VE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024市政工程项目竞标协议书
- 2023年厦门市定安小学教师招聘考试真题
- 拆迁空白合同范本
- 2023年贵州海子街镇卫生院招聘考试真题
- 2024年老年营养课程:《水果拼盘》教案
- 2024年媒体广告发布代理协议模板
- 掌握2024年AE基础培训教程打造震撼视觉体验
- 环保社团实践分享模板
- 2024年教育论坛:《六国论》课件制作与评估探讨
- 2024年度定制设计服务协议示例
- 中小学师德师风建设各项制度汇编
- 2024年保安员证考试题库及答案(共260题)
- 公务员2024年国考申论真题(地市级)及参考答案
- XXXX酒店管理公司成立方案
- 民用无人机操控员执照(CAAC)考试复习重点题及答案
- 疼痛科整体规划和发展方案
- 2024年中国南水北调集团水网水务投资限公司及下属单位社会招聘高频难、易错点500题模拟试题附带答案详解
- (新版)食品生产企业食品安全员理论考试题库500题(含答案)
- 七年级语文上册第13课《纪念白求恩》公开课一等奖创新教案
- 统编版语文六年级上册第八单元大单元整体教学设计
- 教师个人业务学习笔记(41篇)
评论
0/150
提交评论