高 锐
长春职业技术学院, 吉林长春 130033
FPGA现场可编程门阵列,是作为专用集成电路领域中的一种半定制电路出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。用户可以根据不同的配置模式,采用不同的编程方式来设计其内部功能。同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA非常灵活,其器件及开发系统是开发大规模数字集成电路的新技术。用于开发可编程逻辑器件FPGA的工具,较流行的是Alter公司推出的QuartusII软件,它提供完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性。QuartusII软件在设计流程的不同阶段使用不同的用户界面、EDA工具和相应的菜单命令,主要能够实现项目工程的设计输入、分析综合、布局布线、时序分析、设计仿真、编程及配置、系统设计、软件开发和工程变更管理的主要功能。本文所设计的交通灯电路,就是使用QuartusII软件开发平台设计的基于FPGA器件的电路功能。
设计一个基于FPGA的交通灯控制器电路,用来控制丁字路口的交通灯。具体指标要求是,交通灯由两组构成,一组控制主路而别一组控制支路。当主路绿灯亮时,支路红灯亮;主路红灯亮时,支路绿灯亮;主路每次放行35秒,支路每次放行25秒;每次由绿灯变为红灯的过程中,黄灯作为过渡,黄灯亮时间为5s;能实现正常的倒数计时显示功能;实现总体清零功能。由LED显示灯表示交通状态,并以七段数码显示器显示当前状态剩余秒数。要求使用QuartusII软件创建项目工程jtd,对项目工程进行编译及修改,选择Cyclone II系列的EP2C8Q208C8器件并进行引脚分配、项目编译、仿真、生成目标文件,进行器件的编程和配置,使用EDA实验箱验证交通灯电路的功能。
使用QuartusII软件创建项目工程jtd,使用VHDL语言的有限状态机的文本输入方法设计交通控制器功能;创建jtd.vhd文件,其中包括七个进程,分别是1KHz分频、1Hz分频、交通状态转换、禁止通行信号、数码管动态扫描计数、数码管动态扫描和七段译码;进行项目工程的分配器件、分析与综合、布局布线、仿真等操作,保证交通灯控制器功能的正确性。
启动QuartusII软件,建立一个新工程jtd,在此工程下选择菜单“File”→“New”,在弹出的对话框中选择“VHDL File”选项,即可进行VHDL语言程序设计。在此文件中指定目标器件是Cyclone II系列的EP2C8Q208C8。
使用VHDL语言的有限状态机设计交通控制器功能。状态机是一种时序逻辑电路,是一组触发器的输出状态随着时钟和输入信号按照一定的规律变化的一种机制和过程。状态机的基本操作有两种:第一是状态机的内部状态转换,经过一系列状态,状态由状态译码器根据当前状态和输入信号决定;第二是产生输出信号,由输出译码器根据当前状态和输入信号决定。有限状态机的每一个状态对应控制步骤相关的转换条件,按照这种对应关系能够描述时序电路之间的状态转换和状态转换条件。有限状态机的VHDL描述用VHDL语言可能设计不同实用功能的有限状态机,它们都有相对固定的语句和程序表达式,选定有限状态机的类型后,就可以开始设计了。有限状态的VHDL描述通常包括,根据系统功能建立有限状态机的状态转换表或状态转换图;有限状态机说明部分,包括根据状态转换图、建立有限状态机的进程并在其中定义状态转换。根据表1中所示的交通控制电路的状态转换表设计VHDL语言程序。
表1 交通控制电路的状态转换表
选择菜单“Processing” →“Start” →“Start Analysis & Elaboration”,先检查当前电路中错误并修改。
保存好VHDL程序,并生成jtd.bsf电路符号文件。
选择菜单“Assignments”→“Device”,单击“目标器件与引脚选项设置”对话框中Device and Pin Options按钮,并在弹出的对话框中选择Unused Pins选项卡中的Reserve all unused pins选项中的As inputs tri-stated,将当前目标器件中所有未使用的引脚设置成三态。
选择菜单“Assignments”→“Settings”,在弹出的“参数设置”对话框中的Category选项列表中,选择Timing Analysis Settings选项中的Classic Timing Analyzer Settings,使用系统默认值。
选择菜单“Assignments” →“Settings”,单击Category选项列表中的Analysis & Synthesis Settings选项,在这里使用系统默认值。单击Category选项列表中的Fitter Settings选项,在这里使用系统默认值。
选择菜单“Processing”→“Start Compilation”,执行项目工程编译操作,。如果有红色错误信息提示,需要回到设计文件进行修改,保存后再重新执行编译操作,直到最后无误为止。
选择菜单“Assignments”→“Settings”,将Simulator Settings选项中的simulation mode设置为Timing,即进行时序仿真操作。在当前项目工程文件中新建矢量波形文件jtd.vwf,添加引脚信号和节点,并编辑输入引脚的波形,仿真结束时间设置为6.0μs,选择菜单“Processing”→“Start Simulation”,开始执行仿真操作。
[1]张宏亮.基于数字频率计的FPGA开发应用研究.硕士学位论文,2009.
[2]王道宪.CPLD/FPGA 课程逻辑器件应用与开发[M].北京:国防工业出版社,2004.