基于FPGA的电子表决器电路的设计与实现
2015-12-18张超英
杨 东,张超英
(1.黄河科技学院嵌入式系统应用技术实验室,河南郑州 450063;2.漯河职业技术学院电气电子工程系,河南漯河 462002)
电子设计自动化(Electronic Design Automation,EDA)是以计算机为载体,在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作[1]。EDA技术的出现,大幅提高了电路设计的效率和可操作性,减轻了劳动强度。利用EDA工具,电子设计师可从概念、算法、协议等方面开始设计电子系统,大量工作可通过计算机完成,并可将电子产品从电路设计、性能分析到设计出PCB版图的整个过程都在计算机上自动处理完成[2]。基于EDA软件的FPGA开发已广泛应用于电子电路的设计与实现中,图1为基于EDA软件的FPGA开发流程[3]。
1 电子表决器电路
图1 基于EDA软件的FPGA开发流程
传统的电子表决器通过逻辑门电路实现、功能简单、不易扩展,表1是一种3人表决器的真值表,图2是由逻辑门组成的电路图[4]。
表1 3人表决器真值表
图2 3人表决器逻辑门电路
2 基于FPGA的电子表决器
2.1 8人表决器电路
结合VHDL语言在FPGA平台实现电子表决器电路设计,可减小系统面积,方便扩展升级[5],以下程序是使用VHDL语言描述的8人表决电路。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY vote IS
PORT(FF:IN STD_LOGIC_VECTOR(1 TO 8);—FF:一维数组FF用来表示8位表决者
CLK:IN BIT;
AA,QQ:OUT BIT);—AA:赞成人数。QQ:表决最终是否通过(‘1’为通过,‘0’为未通过)
END vote;
ARCHITECTURE behaver OF vote IS
SIGNAL A:BIT;
BEGIN
PROCESS(FF)
VARIABLE SUM:STD_LOGIC_VECTOR(4 DOWNTO 1);
VARIABLE Q:BIT;
BEGIN
SUM:=“0000”;
FOR N IN 1 TO 8 LOOP
SUM:=FF(N)+SUM;
END LOOP;
AA≤SUM;
IF(SUM >4)THEN Q:=‘1’;
ELSE Q:=‘0’;
END IF;
A≤Q;
END PROCESS;
PROCESS(CLK,A)—消除竞争与冒险
BEGIN
IF(CLK'EVENT AND CLK=‘1’)THEN QQ≤A;
END IF;
END PROCESS;
END behave;
2.2 10人表决器电路
通过8人表决电路表决通过时电路状态的观察和验证,使用VHDL语言在FPGA平台实现10人表决器电路设计[6]。在8人表决器编程基础上修改程序,实现10人表决器电路的设计。编程中完成参与表决的每个人均可选择赞成、放弃或弃权。同时,增加了控制键,可增加专人在进行表决过程中的控制,实现了表决的开始、结束和数据的锁存[7]。
3 电路仿真
图3是8人表决器电路时序波形,从图中可看出程序实现了设计要求,在8人表决器程序的RTL生成电路界面显示有9个逻辑门和硬件资源组成电路。
图3 8人表决器时序波形
按图4所示进行管脚锁定后,即可在实验箱上进行验证,将程序下载到实验平台后,获取实验结果,经验证符合设计要求。
图4 引脚锁定
图5为程序仿真结果。在10人表决器的RTL电路界面图中可看出,其比8人表决器程序的RTL电路界面图多出了一些硬件资源,若单独使用逻辑门设计电路将是一件复杂的工作,且不便于修改和测试[8]。
而使用EDA进行设计,还可方便地进行系统扩展,如上述程序中只需增加几个输出端口,将SUMA,SUMB,SUMC的值赋给相应端口,在外接数码管便可显示出赞成、反对、弃权的人数。或增加声音模块,使系统更具实用价值。而进行这些工作只需改变程序,加入现成的元器件即可[9]。
图5 10人表决电路仿真图
4 结束语
电子表决器,做为投票系统中的客户端,是一种代表投票或举手表决的装置[10]。基于FPGA电子表决器的设计解决了传统投票表决方式存在投票耗时长、计票任务重,且易于出错、易受人控制等缺点,故在表决、选举中获得了广泛应用。
[1]Stefan Sjoholm Le.用VHDL设计电子线路[M].边计年,薛宏熙,译.北京:清华大学出版社,2000.
[2]禇振勇,翁木云.FPGA设计与应用[M].西安:电子科技大学出版社,2002.
[3]潘松,黄继业.EDA技术与VHDL[M].北京:清华大学出版社,2007.
[4]马秀花,周又玲.基于 QuartusⅡ的七人表决电路设计[J].无线互联科技,2011(12):31 -33.
[5]Gail Gray F.VHDL设计表示与综合[M].李宗伯,王蓉晖,译.北京:机械工业出版社,2002.
[6]王锁萍.电子设计自动化(EDA)教程[M].成都:电子科技大学出版社,2000.
[7]黄正谨,徐坚,章小丽,等.CPLD系统设计技术入门与应用[M].北京:电子工业出版社,2002.
[8]蒋璇,藏春华.数字系统设计与PLD应用技术[M].北京:电子工业出版社,2001.
[9]王金明,杨吉斌.数字系统设计与Verilog HDL[M].北京:电子工业出版社,2002.
[10]潘松,王国栋.VHDL实用教程[M].西安:电子科技大学出版社,2001.