基于EDA的四位数码显示频率计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于EDA的四位数码显示频率计
————————————————————————————————作者:————————————————————————————————日期:
基于EDA的数字频率计的设计
【摘要】在电子技术中,频率是最基本的参数之一,并且与许多电参量的
测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。
测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。
电子计数器测频有两种方式:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法,如周期测频法。
直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。
本文阐述了用VHDL语言设计了一个简单的数字频率计的过程.
【关键词】EDA;VHDL;数字频率计;波形仿真;
1.1 设计要求
借助于FPGA/CPLD的开发技术,设计一个4位十进制数字显示的数字式频率计,具体要求如下:
(1)4位十进制数字显示的数字式频率计的测量范围为1k~9999KHZ,测量单位为KHZ;
(2)要求量程能够自动转换,即几十KHZ显示小数点后两位,而几百KHZ 则显示小数点后一位;
(3)当输入信号小于1KHZ时,输出全0,当输入大于9999KHZ时,输出显示全H。
1.2方案论证
采用FPGA/CPLD芯片作为控制核心单元,完成各功能模块。
首先将被测信号与控制信号加在FPGA/CPLD芯片上,通过在芯片内部进行各逻辑操作,完成分频、计数及扫描显示等功能操作,最后通过数码管显示结果.其原理框架图如下图1-2所示。
FPGA/C
被测
图1—2 以FPGA/CPLD 为核心的数字频率计
第二章 频率计的原理及测量方法
数字频率计是直接用十进制数字显示被测信号频率的一种测量装置。
它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。
所谓频率,就是周期性信号在单位时间(1s)里变化的次数。
若在一定时间间隔T 内测得的这个周期性信号的重复变化次数N ,则其频率可表示为f=N/T ;只要知道了N 和T 就可以求得频率。
若设置闸门信号的时间为1S ,则被测频率就是NHz 。
M 法是在给定的闸门时间内测量被测信号的脉冲个数,进行换算得出被测信号的频率。
当频率计正常工作时,频率为0.5Hz 的闸门信号作为计数器的时钟信号,而被测信号则作为计数器的时钟输入.当闸门信号为高电平是允许计数;而为低电平时,计数器停止计数,则所计的数值即为被测信号的频率.
本频率计设计测量频率的方法就是利用M 法,首先让被测信号与标准信号一起通过一个闸门,然后用计数器计数信号脉冲的个数,把标准时间内的计数的结果,用锁存器锁存起来,最后用显示译码器,把锁存的结果用LED 数码显示管显示出来.
根据数字频率计的基本原理,本文设计方案的基本思想是分为五个模块来实现其功能,即整个数字频率计系统分为分频模块、防抖模块、计数模块、译码模块和锁存模块,再加一个顶层模块,并且分别用VHDL 对其进行编程,实现了闸门控制信号电路、防抖电路、计数电路、锁存电路、显示电路等。
各控
分频
计数锁存模块动态
图2-1 频率计测量频率的原理图
3。
1 时钟分频模块
本设计为满足EDA 开发板的要求,故采用32KHz 的时钟作为输入时钟,对其进行分频,得到3个子时钟,即200Hz 的片选信号(动态扫描时钟)、25Hz 的防抖电路时钟和0.5Hz 的闸门信号。
其实体模块如图3-1-1。
图3-1-1
END TIME 设置为8s
加32KHz 的输入信号,其仿真波形如图3—1-2。
脉冲计数
模
译码
控制
量程自动
分锁存
清零
使能
被测信号
基准信号
32K
200Hz 片
25Hz 防0.5Hz 闸
200Hz
25Hz
32KHz 0。
5Hz
图3—1-2
3。
2 防抖电路模块
在实际电路中按键会产生毛刺抖动,并且输出的信号并不稳定,故为保证电路不受毛刺的影响,并产生有效的信号,可加一个防抖电路来消除其影响。
其实体模块如图3-2-1所示。
图3-2—1
此模块只有在cp2上升沿来时,若key为高电平,则imp输出一个cp2周期的有效稳定高电平;其它imp都输出低电平。
其仿真波形如图3-2-2.
按键按下
图3—2—2
3.3 计数模块
此模块可在闸门信号内对被测信号进行计数,及4位BCD 显示结果的输出,并自动进行量程的转换.其实体模块如图3-3-1。
图3—3-1
此模块的仿真波形如图3-3—2.
25Hz 时钟
输出一个宽度
开关信闸门被测复位信
输入
输
4位BCD 显示结
0。
125KH enable 为1,
图3—3—2
3.4 锁存模块
此模块是将计数部分的输出结果进行缓冲锁存,保证结果的正确输出显示。
即在计数部分cp3为低电平(停止计数)时,将输出的结果进入锁存部分,通过锁存器将结果给译码显示器。
其实体模块如图3—4-1.
图3—4-1
此模块的仿真波形如图3—4-2。
可见,在cp3下降沿时,锁存器将输入锁存,直接给输出;reset 为1时,可清零.
4位BCD 输出
计数模
锁存
图3-4—2
3.5 译码显示模块
此模块是对显示部分的4位7段数码管进行动态扫描与译码显示,如此可直观地反映被测信号的频率。
其实体模块如图3-5—1.
图3-5—1
此模块的仿真波形如图3—5—2。
锁存
数
码数
码
图3-5—2
加小数点84为位
第四章系统设计与仿真
在各个子模块设计好之后,还需要一个顶层文件将它们联系起来,构成一个完整的系统,如此才能具备测频的功能。
整个系统的原理图如图4—1所示。
图4-1
由于此设计的频率计量程为1KHz~~9999KHz,故需对各个范围的值都进行仿真,其仿真波形如下:
32KHz 500H
图4—2 被测信号为500Hz时的仿真波形
注:被测信号为500Hz时,仿真结果显示为’00111111’’00111111' ’00111111' ’00111111’,即“0000”。
图4-3 被测信号为1250Hz时的仿真波形
注:被测信号为1250Hz时,仿真结果显示为'10000110' ’01011011’’01101101’'00111111’,即“1。
250"。
图4—4 被测信号为50KHz时的仿真波形
注:被测信号为50KHz时,其仿真结果显示为'01101101’’10111111’'00111111’'00111111' ,即“50。
00”。
图4—4 被测信号为125KHz时的仿真波形
注:被测信号为125KHz时,其仿真结果显示为’00000110' ’01011011’’11101101' ’
00111111' ,
即“125.0"。
图4—5 被测信号为1250KHz时的仿真波形
注:被测信号为1250KHz时,其仿真结果显示为'00000110’'01011011' '01101101’'00111111’,
即“1250"。
图4—5 被测信号为1250KHz时的仿真波形
注:被测信号为12MHz时,其仿真结果显示为’01110110’’01110110' '01110110’'01110110' ,
即“HHHH”。
数码管数值译码对应表:
数值dp g f e d c b a
0 0/1 0 1 1 1 1 1 1
1 0/1 0 0 0 0 1 1 0
2 0/1 1 0 1 1 0 1 1
3 0/1 1 0 0 1 1 1 1
4 0/1 1 1 0 0 1 1 0
5 0/1 1 1 0 1 1 0 1
6 0/1 1 1 1 1 1 0 1
7 0/1 0 0 0 0 1 1 1
8 0/1 1 1 1 1 1 1 1
9 0/1 1 1 0 1 1 1 1
H 0/1 1 1 1 0 1 1 0
第五章硬件实验及结果
5。
1 硬件实验方案
将程序烧入芯片中,在EDA实验开发板上进行实验。
其引脚锁定如下:注:
cp32m绑定32KHz
Enable1绑定DK2
Reset1绑定DK3
Input1绑定CLK1的2KHz
Sel1[0]绑定LI0
Sel1[1]绑定LI1
Sel1[2]绑定LI2
Show1[0]绑定A8
Show1[1]绑定B8
Show1[2]绑定C8
Show1[3]绑定D8
Show1[4]绑定E8
Show1[5]绑定F8
Show1[6]绑定G8
Show1[7]绑定DP8
将管脚按以上绑定好,就可以在实验板上调试了。
5.2 实验结果
将程序下载到实验板中,在enable未打开(即为‘0')时,可以看到数码管并没有数值显示(即均为0);在置enable1为‘1’时,可以看到显示结果为“2。
XXX"(数值不固定,有变化);此时置reset1为‘1’,可看到显示结果清零;将input1接为2Hz,显示为“0000”;
将input1接为Y1(即为12MHz),显示为“HHHH"。
由于实验板上没有几千KHz、几百KHZ和几十KHz,但根据仿真结果可知,设计是没有问题的。
从仿真和实验结果可以看出本设计能够对满足设计要求量程内的信号频率进行测量。
第六章心得体会
通过本次的课程设计,让我再次深入了EDA的世界,使我对这一门学科有了更高层次的了解。
在开始设计前一定要将课本上的知识吃透,因为这是做实验
的基础,否则,设计的难度就很大,会浪费很多时间。
而且还要对设计的相关内容积极查阅资料,对设计内容要亲力亲为,务必将每个步骤,每个细节弄清楚,弄明白。
在做好这些前奏工作后就要自己去设计了,将学到的理论知识运用到实际操作中去。
通过这为期两周的课程设计,我受益匪浅,不但巩固了理论知识,还进一步掌握了实际操作发法。
增强了自己研究问题和创新意识的能力。
在课设中可以用充实和繁忙来形容了,每天都奔波在寝室与实验室之间.之所以充实是在课堂上学到的东西都有了用武之地。
有些更是自己在图书馆查找资料,网上搜索,同学讨论,老师讲解中学习了解到的.巩固和提升了自己的知识水平。
这两周也可以用沮丧和欢喜来形容,当面临一个个难题是,绞尽脑汁也束手无策时,心里真的好难受,感觉好失败。
但最终将它们解决时,那又是多么欢喜。
在这期间,我还明白了,只有脚踏实地、认真严谨、实事求是才能够在每一步中得到真正的收获。
这也是我在这次课设中最大的收益。
我想这是一次意志的磨练,是对我实际能力的一次提升,也会对我未来的学习和工作有很大的帮助。
读万卷书,行万里路。
我要学习与实践相结合,而且我本来就是学电子的,只有在实践中去巩固和理解学到的知识,才能真正地掌握它,才能在以后的工作中发挥作用。
参考文献
【1】EDA技术实用教程科学出版社潘松黄继业
【2】数字电路EDA入门—-——--VHDL程序实例集北京邮电大学出版社张亦华
【3】VHDL应用与开发实践科学出版社甘历
【4】CPLD/FPGA应用开发技术与工程实践人民邮电出版社
【5】FPGA系统设计与实践电子工业出版社黄智伟
附录:
程序代码:
-——--顶层模块-———-
Library ieee;
use ieee.std_logic_1164.all;
use ieee。
std_logic_signed.all;
entity total is
port(cp32m:in std_logic; —-32KHz时钟信号
enable1:in std_logic;——开关信号
input1:in std_logic; --输入被测信号
reset1:in std_logic;——复位信号
sel1:out std_logic_vector(2 downto 0);—-输入片选信号
show1:out std_logic_vector(7 downto 0));-—输出七位数码管显示end total;
architecture content of total is
signal cp_1,cp_2,cp_3:std_logic;
signal reset_1:std_logic;
signal overflow_1,low_1:std_logic;
signal play0_1,play1_1,play2_1,play3_1:integer range 0 to 9;
signal overlatch_1,lowlatch_1:std_logic;
signal p0_1,p1_1,p2_1,p3_1:integer range 0 to 9;
signal decimal_1:std_logic_vector(3 downto 0);
signal de1:std_logic_vector(3 downto 0);
component dividefre4 is
port(cp_32m:in std_logic;
cp1:out std_logic;
cp2:out std_logic;
cp3:out std_logic);
end component;
component debounce is
port(key:in std_logic;
cp2:in std_logic;
imp:out std_logic);
end component;
component fretest is
port(enable,cp3,input,reset:in std_logic;
overflow,low:out std_logic;
play0,play1,play2,play3:out integer range 0 to 9;
decimal:out std_logic_vector(3 downto 0));
end component;
component frelatch is
port(reset:in std_logic;
cp3:in std_logic;
overflow:in std_logic;
low:in std_logic;
play0,play1,play2,play3:in integer range 0 to 9;
decimal:in std_logic_vector(3 downto 0);
overlatch:out std_logic;
lowlatch:out std_logic;
p0latch,p1latch,p2latch,p3latch:out integer range 0 to 9;
delatch:out std_logic_vector(3 downto 0));
end component;
component display is
port(cp1:in std_logic;
low:in std_logic;
overflow:in std_logic;
de:in std_logic_vector(3 downto 0);
p0,p1,p2,p3:in integer range 0 to 9;
show:out std_logic_vector(7 downto 0);
sel:out std_logic_vector(2 downto 0));
end component;
begin
u1:dividefre4 port map(cp_32m=〉cp32m,cp1=〉cp_1,cp2=>cp_2,cp3=>cp_3);
u2:debounce port map(key=>reset1,cp2=〉cp_2,imp=〉reset_1);
u3:fretest port map(enable=>enable1,cp3=〉cp_3,input=〉input1,reset=〉reset_1,
overflow=>overflow_1,low=〉low_1,play0=>play0_1,play1=〉play1_1,play2=>play2_1,play3=〉play3_1,decimal=>decimal_1);
u4:frelatch port map(reset=〉reset_1,cp3=〉cp_3,overflow=>overflow_1,low=>low_1,
play0=>play0_1,play1=〉play1_1,play2=〉play2_1,play3=>play3_1,decimal=>decimal_1,overlatch=>overlatch_1,lowlatch=>lowlatch_1,p0latch=>p0_1,p1latch=〉p1_1,p2latch=>p2_1, p3latch=〉p3_1,delatch=>de1);
u5:display port map(cp1=〉cp_1,low=>lowlatch_1,overflow=>overlatch_1,p0=〉p0_1,
p1=>p1_1,p2=〉p2_1,p3=〉p3_1,show=>show1,sel=〉sel1,de=〉de1);
end content;
--—-分频模块--—-—
Library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_signed.all;
Entity dividefre4 Is
port(cp_32m:in std_logic;
cp1:out std_logic; -—200Hz片选信号
cp2:out std_logic; -—25Hz防抖动电路周期信号
cp3:out std_logic);--0.5Hz闸门信号
end dividefre4;
architecture behavior of dividefre4 is
signal tout:integer range 0 to 80;
signal tout1:integer range 0 to 7;
signal tout2:integer range 0 to 400;
signal cp_1:std_logic;
signal cp_2:std_logic;
signal cp_3:std_logic;
signal cp:std_logic;
begin
process(cp_32m) -—80分频,分到400Hz
begin
if(cp_32m’event and cp_32m='1')then
if tout=79 then
tout〈=0;
else tout〈=tout+1;
end if;
if tout=39 then
cp〈='0';
else cp<='1';
end if;
end if;
end process;
process(cp) —-200Hz
begin
if(cp’event and cp='1') then
cp_1〈=not cp_1;
end if;
end process;
process(cp_1)
begin
if(cp_1'event and cp_1=’1’) then
if tout1=7 then tout1〈=0;
else tout1〈=tout1+1;
end if;
if tout1=3 then
cp_2〈=’1';
elsif tout1=7 then cp_2〈=’0’; —-cp_2得到25Hz
end if;
if tout2=399 then tout2〈=0;
else tout2<=tout2+1;
end if;
if tout2=399 then
cp_3<='1';
elsif tout2=199 then cp_3〈=’0';-—cp_3得到0。
5Hz
end if;
end if;
end process;
cp1〈=cp_1;cp2〈=cp_2;cp3<=cp_3;
end behavior;
—-----防抖模块-———-—
Library ieee;
use ieee。
std_logic_1164。
all;
use ieee。
std_logic_arith.all;
use ieee。
std_logic_unsigned。
all;
Entity debounce is
port(key,cp2:in std_logic;
imp:out std_logic);
end debounce;
architecture base of debounce is
signal q1,q2:std_logic;
begin
process(cp2)
begin
if cp2’event and cp2=’1’then
q2<=q1;
q1<=key;
end if;
end process;
imp<=q1 and not q2;
end base;
—————-计数模块——---
Library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_signed.all;
Entity fretest Is
port(enable:in std_logic;——开关信号
cp3:in std_logic;-—闸门信号
input:in std_logic; —-被测信号
reset:in std_logic; -—复位信号
overflow:out std_logic;—-输入大于9999KHz信号的输出
low:out std_logic;--输入小于1KHz信号的输出
play0,play1,play2,play3:out integer range 0 to 9; -—4位BCD显示结果输出decimal:out std_logic_vector(3 downto 0));-—小数点输出
end fretest;
architecture behavior of fretest is
signal r0_1,r1_1,r2_1,r3_1,r4_1,r5_1,r6_1:integer range 0 to 9;
begin
process(input,enable,reset)
begin
if enable='0' then null;
elsif(input'event and input='1')then
if reset=’1' then —-复位信号为'1’时,输出全为0
overflow〈='0’;r0_1<=0;r1_1<=0;r2_1〈=0;r3_1<=0;r4_1<=0;r5_1<=0;r6_1〈=0;
elsif cp3=’0' then --当闸门处于低电平'0'时,输出为全0
overflow〈='0’;r0_1<=0;r1_1〈=0;r2_1<=0;r3_1〈=0;r4_1<=0;r5_1〈=0;r6_1〈=0;
else
r0_1〈=r0_1+1;
if(r0_1=9) then r1_1<=r1_1+1;r0_1<=0;
if(r1_1=9) then r2_1<=r2_1+1;r1_1<=0;
if(r2_1=9)then r3_1〈=r3_1+1;r2_1〈=0;
if(r3_1=9) then r4_1〈=r4_1+1;r3_1<=0;
if(r4_1=9)then r5_1〈=r5_1+1;r4_1〈=0;
if(r5_1=9)then r6_1〈=r6_1+1;r5_1〈=0;
if(r6_1=9) then r6_1<=0;——当计到第七位仍不够时,溢出为1,即输入大于9999KHz
overflow〈=’1';
end if;
end if;
end if;
end if;
end if;
end if;
end if;
if(r6_1=0 and r5_1=0 and r4_1=0 and r3_1=0) then —-当高四位都为0时,即输入信号小于1KHz
low〈=’1';
else low〈=’0';
end if;
end if;
end if;
end process;
process(r6_1,r5_1,r4_1)
begin
if(r6_1=0 and r5_1=0 and r4_1=0) then -—输出为#.###KHz
play0<=r0_1;play1〈=r1_1;play2<=r2_1;play3<=r3_1;
decimal<="1000";
elsif(r6_1=0 and r5_1=0 and r4_1〉0)then -—输出为##。
##KHz play0〈=r1_1;play1〈=r2_1;play2<=r3_1;play3〈=r4_1;
decimal〈="0100”;
elsif(r6_1=0 and r5_1〉0)then ——输出为###。
#KHz
play0<=r2_1;play1<=r3_1;play2<=r4_1;play3<=r5_1;
decimal〈="0010”;
else -—输出为####KHz
play0<=r3_1;play1<=r4_1;play2<=r5_1;play3<=r6_1;
decimal<=”0000";
end if;
end process;
end behavior;
--—-—锁存模块——-—-
Library ieee;
use ieee.std_logic_1164.all;
use ieee。
std_logic_signed.all;
Entity frelatch Is
port(reset:in std_logic;—-复位信号
cp3:in std_logic;—-闸门信号
overflow:in std_logic;——各项输入
low:in std_logic;
play0,play1,play2,play3:in integer range 0 to 9;
decimal:in std_logic_vector(3 downto 0);
overlatch:out std_logic;--锁存后的各项输出
lowlatch:out std_logic;
p0latch,p1latch,p2latch,p3latch:out integer range 0 to 9;
delatch:out std_logic_vector(3 downto 0));
end frelatch;
architecture behavior of frelatch is
begin
process(cp3,reset)
begin
if reset=’1’then ——reset为1时置零
overlatch〈=’0’;lowlatch〈=’0’;p0latch〈=0;p1latch〈=0;p2latch<=0;p3latch〈=0;
delatch<=decimal;
elsif cp3'event and cp3='0' then -—当闸门处于下降沿时,将此时计数模块的各项输出值锁存
overlatch〈=overflow;
lowlatch<=low;
p0latch〈=play0;p1latch<=play1;p2latch<=play2;p3latch<=play3;
delatch<=decimal;
end if;
end process;
end behavior;
--—--扫描显示模块—————
Library ieee;
use ieee.std_logic_1164.all;
use ieee。
std_logic_signed。
all;
entity display is
port(cp1:in std_logic;—-200Hz信号
low:in std_logic; -—输入小于1KHz的信号
overflow:in std_logic;——输入大于9999KHz的信号
de:in std_logic_vector(3 downto 0);——小数点输入
p0,p1,p2,p3:in integer range 0 to 9;——输入信号
show:out std_logic_vector(7 downto 0);--七位数码管输出信号
sel:out std_logic_vector(2 downto 0));—-片选信号
end display;
architecture behavior of display is
signal count:integer range 0 to 3;
signal sel_1:std_logic_vector(2 downto 0);
begin
process(cp1)
begin
if(cp1’event and cp1=’1’)then
if count=3 then count〈=0;
else
count<=count+1;
end if;
end if;
end process;
process(count)
begin
case count is
when 0 => sel_1〈=”000”;
when 1 =〉sel_1<=”001";
when 2 => sel_1<=”010”;
when 3 =〉sel_1〈="011”;
end case;
end process;
process(low,overflow)
begin
if(low=’1’)then show〈="00111111”;
elsif(overflow=’1’)then show<=”01110110”;
elsif(sel_1=”000")then
case p0 is
when 0 =〉show<=”00111111”;
when 1 => show〈="00000110";
when 2 =〉show〈=”01011011”;
when 3 =〉show〈="01001111";
when 4 =〉show<=”01100110";
when 5 => show<=”01101101";
when 6 =〉show<="01111101”;
when 7 => show〈=”00000111”;
when 9 => show<=”01101111”;end case;
elsif(sel_1=”001") then
if de=”0010”then
case p1 is
when 0 =〉show〈=”10111111";
when 1 =〉show〈=”10000110”;
when 2 => show〈="11011011”;
when 3 =〉show〈=”11001111”;
when 4 => show〈="11100110”;
when 5 => show〈=”11101101";
when 6 => show〈=”11111101”;
when 7 => show<="10000111”;
when 8 => show〈="11111111";
when 9 => show〈=”11101111";end case;
else
case p1 is
when 0 =〉show〈=”00111111”;
when 1 =〉show〈=”00000110";
when 2 =〉show〈="01011011";
when 3 => show<="01001111";
when 4 => show<=”01100110”;
when 5 => show〈="01101101";
when 6 => show<=”01111101";
when 7 => show〈="00000111”;
when 8 =〉show〈=”01111111";
when 9 =〉show〈=”01101111"; end case;
end if;
elsif(sel_1="010”)then
if de="0100”then
case p2 is
when 0 => show<=”10111111";
when 1 =〉show<=”10000110”;
when 2 => show〈=”11011011";
when 3 =〉show<="11001111”;
when 4 =〉show<=”11100110”;
when 5 => show<=”11101101”;
when 6 =〉show〈="11111101";
when 7 => show<="10000111";
when 9 =〉show<="11101111”;end case;
else
case p2 is
when 0 =〉show<="00111111”;
when 1 =〉show<="00000110”;
when 2 => show<="01011011";
when 3 => show〈=”01001111";
when 4 =〉show<="01100110”;
when 5 => show<=”01101101";
when 6 => show<="01111101”;
when 7 => show<=”00000111”;
when 8 => show<="01111111";
when 9 =〉show〈=”01101111";end case;
end if;
elsif(sel_1=”011”) then
if de="1000”then
case p3 is
when 0 => show<=”10111111”;
when 1 =〉show〈=”10000110";
when 2 => show〈="11011011";
when 3 =〉show〈="11001111”;
when 4 => show<="11100110”;
when 5 =〉show<=”11101101";
when 6 => show〈=”11111101";
when 7 =〉show<=”10000111”;
when 8 =〉show<="11111111";
when 9 =〉show<=”11101111”; end case;
else
case p3 is
when 0 =〉show〈=”00111111";
when 1 => show〈=”00000110";
when 2 => show〈="01011011”;
when 3 => show〈=”01001111”;
when 4 => show<=”01100110";
when 5 =〉show<=”01101101";
when 6 => show<=”01111101”;
when 7 => show〈="00000111”;
when 8 => show<=”01111111";
when 9 =〉show〈="01101111”;
end case;
end if;
end if;
end process;sel〈=sel_1;end behavior;。