引言
数字系统是用来处理逻辑信息、对数字信号进行加工、传输和存储电路的实体。最常见的数字系统包括计算机、计算器、数字音像设备、数字电话系统等。数字系统可被软件和硬件共同控制,因此数字系统远比模拟系统灵活。
随着EDA 技术和工具的发展,现代数字系统的设计思想、设计工具和实现方式均发生了变化,已完成了由原理图输入向硬件描述语言HDL 设计的转变,设计全程均有较完善的EDA 工具支持,采用FPGA 实现系统(直接做产品或者原型系统)已成为现代数字系统设计的主流做法。
1.FPGA 的开发流程
FPGA开发流程主要包括设计准备、设计输入、综合、仿真、适配、下载及硬件测试等步骤。系统设计之前,首先要进行方案论证、系统设计和芯片选择等设计准备工作。设计者根据任务要求,选择合适的设计方案和器件类型,通常采用自顶向下的设计方法。
设计输入常用的方法是硬件描述语言和原理图输入方式,硬件描述语言主要有VHDL 和VerilogHDL 两个IEEE 标准,不需对底层电路和FPGA结构很熟悉。原理图输入方式是一种最直接的描述方式,要求设计者有丰富的电路知识并对器件结构比较熟悉。
用户所设计的电路必须在编译之前进行逻辑功能验证,即功能仿真,也叫前仿真。逻辑综合通过后必须利用适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层器件配置、逻辑分割、逻辑优化、布线与操作,适配完成后可以利用适配所产生的仿真文件做精确的时序仿真。时序仿真完成后,软件就可以产生供器件编程使用的数据文件,然后下载到对应的具体FPGA芯片中去。
2. 计时器电路的FPGA设计案例分析
(1)设计要求
本项目以计时器作为项目载体,本项目的计时器设计要求为:
①用6位数码管显示计时器的小时、分钟和秒数值;②计时显示范围为24小时,最大显示为23点59分59秒数值;③具有异步清零功能。
(2)功能描述
①秒脉冲产生将FPGA 的外围高频晶振分频得到的秒脉冲,由一个分频器模块构成;②秒计时、分计时和小时计时电路由计数器构成,分别实现60进制和24进制加计数;③时间显示用6位数码管实现,采用动态显示。
(3)计时器的层次化设计方案
根据上述功能,可以把计时器电路划为三部分:计时器、分频器和动态扫描显示电路,分别用VHDL的结构化描述方式实现。
①分频器
分频器就是可将某高频率的信号变为较低频率信号的数字部件。将频率为fs的信号进行N 分频后的信号频率为:fo=fs/N。本项目计时器的秒脉冲信号,以CPLD/FPGA 外围使用20MHz 晶振为例,秒脉冲可由20MHz 信号经20M 分频得到。
②显示数据选择模块
计时器需要计2位小时、2位分钟和2位秒。为了将小时、分钟和秒区分显示,如显示14时52分36秒的格式为:14-52-36,因此采用8位LED数码管,字符“-”可以用0~9之外的其它代码译码得到,例如在第3 位和第6位要显示字符“-”,在对应的位码信号为“11011111”和“11111011”时,选择显示数据为“1010”,而在译码显示电路中,再将“1010”转换为“-”的段码“0000001”即可实现上述显示格式。用基于3线8线译码器的显示数据选择器,在第3 位和第6 位要显示字符“-”,对应的位码为“101”和“010”。
位码产生模块是在BCD-七段显示译码器模块segment 中增加字形“-”的段码“0000001”。
将上述计时器的进行VHDL设计并编程配置到FPGA 芯片中,即完成本项目的设计。
结语
本文分析了现代数字系统设计的基本流程,探索并实践了将FPGA技术引入数字电路的教学案例。设计一个计时器电路,让学生利用新型的FPGA开发板进行实现,通过实践,加强学生对知识点的理解和掌握,激发学生兴趣。