豆晓东 倪春伟 周振
摘 要:针对实际应用的需要,利用可编程逻辑器件设计了抢答器。该抢答器单元电路的软件设计利用硬件描述语言设计完成。设计了控制主电路、数字显示电路、编码译码电路功能,并利用Quartus工具软件完成了编译仿真验证;硬件选择FLEX10K系列的EPF10K10LC84-4芯片来实现抢答器的系统功能。该抢答器具有很强的功能扩充性,应用效果良好。
关键词:可编程逻辑器件;抢答器;硬件描述语言;仿真;系统可编程
中图分类号:TM571.61
1 FLEX10K
FLEX10K系列器件首次采用嵌入式阵列,其容量高达25万门。由于它的高密度和易于在设计中实现复杂宏函数和存储器,因此可以把一个子系集成在单一芯片上,而每个FLEX10K器件都包含一个嵌入式阵列,每个嵌入式阵列可以实现专用的功能,因此嵌入式阵列可以减少芯片的体积,使其运行速度更快,使用更灵活。
2 VHLD硬件描述语言简介
VHDL最早是由美国国防部提出的。作为硬件描述语言的第一个国际标准,VHDL描述电路行为的算法有很多优点:
(1)设计层次较高,用于较复杂的计算时,能尽早发现存在的问题,缩短设计周期。(2)独立实现、修改方便。(3)移植性强,其源代码已成为一种输入标准,可用于各种不同的EDA工具。(4)VHDL类型众多而且支持用户自定义类型,支持自顶而下的设计方法和多种电路的设计。
3 QuartusⅡ简介
Altera的QuartusⅡ设计软件继承了MAX+plusⅡ的所有优点,是更加完善的PLD设计工具。它提供了完整的多平台设计环境,能够直接满足特定设计需要,为可编程芯片系统(SOPC)提供全面的设计环境。
4 设计思路
设计制作一个竞赛抢答器,每组受控于一个抢答按键,分别为s0、s1、s2、s3,设置主持人控制键rst,用于控制整个系统清零和抢答有效控制。按下复位键时,系统清零;抬起复位键时,抢答开始;系统具有第一抢答信号鉴别和锁存功能。在主持人将系统复位并使抢答有效开始后,第一抢答者按下抢答按钮,电路应记忆下第一抢答者的组别,并封锁其他各组的按钮,即其他任何一组按键都不会使电路响应;系统以两种方式指示第一抢答者:一是通过对应的输出引脚让数码管显示组别号;二是在第一抢答者产生时,蜂鸣器响起。
5 原理分析
5.1 抢答器鉴别模块
在这个模块中主要实现抢答过程中的抢答功能,还能记录抢答者的台号,并且能实现当有一路抢答按键按下时,其余各路被封锁的功能。其中有四个抢答信号s0、s1、s2、s3;抢答使能信号s;抢答状态显示信号states;抢答与警报时钟信号clk2;系统复位信号rst;警报信号tmp。
5.2 报警模块(已包含在抢答鉴别模块里)
在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有人抢答时蜂鸣器开始报警,有效电平输入信号i;状态输出信号q;计数脉冲clk2。
5.3 译码模块
在这个模块中主要实现抢答过程中将选手的台号转换成二进制码并送给数码管显示。
各模块程序如下:
抢答鉴别模块:
library ieee;--抢答鉴别模块
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity qdjb is
port(rst,clk2:in std_logic;
s0,s1,s2,s3:in std_logic;
states:buffer std_logic_vector(3 downto 0);
tmp:out std_logic);
end qdjb;
architecture one of qdjb is
signal st:std_logic_vector(3 downto 0);
begin
p1:process(s0,rst,s1,s2,s3,clk2)
begin
if rst='0' then
tmp<='0';st<="0000";
elsif clk2'event and clk2='1' then
if (s0='1' or st(0)='1')and not( st(1)='1' or st(2)='1' or st(3)='1' ) then st(0)<='1';
end if ;
if (s1='1' or st(1)='1')and not( st(0)='1' or st(2)='1' or st(3)='1' ) then st(1)<='1';
end if ;
if (s2='1' or st(2)='1')and not( st(0)='1' or st(1)='1' or st(3)='1' ) then st(2)<='1';
end if ;
if (s3='1' or st(3)='1')and not( st(0)='1' or st(1)='1' or st(2)='1' ) then st(3)<='1';
end if ;
tmp<=s0 or s1 or s2 or s3;
end if ;
end process p1;
p2:process(states(0),states(1),states(2),states(3))
begin
if (st="0000") then states<="0000";
elsif (st<="0001") then states<="0001";
elsif (st<="0010") then states<="0010";
elsif (st<="0100") then states<="0011";
elsif (st<="1000") then states<="0100";
end if;
end process p2;
end one;
译码模块:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY YMQ IS
PORT(AIN4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DOUT7: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END YMQ;
ARCHITECTURE ART OF YMQ IS
BEGIN
PROCESS(AIN4)
BEGIN
CASE AIN4 IS
WHEN "0001"=>DOUT7<="0110000"; --1
WHEN "0010"=>DOUT7<="1101101" --2
WHEN "0011"=>DOUT7<="1111001"; --3
WHEN "0100"=>DOUT7<="0110011"; --4
WHEN OTHERS=>DOUT7<="0000000";
END CASE;
END PROCESS;
END ARCHITECTURE ART;
6 结束语
本文利用硬件描述高级语言VHDL设计的优点完成了对应单元的电路设计,使系统较为简洁合理。利用复杂可编程器件实现了抢答器的系统功能,使电路引脚定义自如,实际印板布线灵活,应用可靠。通过以实例可以看出,用VHDL语言设计数字系统,是自上至下地进行设计,十分方便灵活。由于VHDL具有并行同时语句,设计的电路延迟小。
参考文献:
[1]谭会生,瞿遂春.EDA技术综合应用实例与分析[M].西安:西安电子科技大学出版社,2004.
[2]李国洪,胡辉,沈明山.EDA技术与实验[M].北京:机械工业出版社,2008.
[3]王道宪,贺名臣,刘伟.VHDL电路设计技术[M].北京:国防工业出版社,2004.