基于FPGA的SOPC技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于FPGA的数字时钟设计
摘要:EDA技术在电子系统设计领域越来越普及,本设计主要利用VHDL和C 语言在FPGA实验板上设计一个电子数字钟,它的计时周期为24小时,显示满刻度为23时59分59秒、。总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块、时分秒计数模块、处理器及外设模块,并且使用QuartusII运用VHDL语言对分频和计数两个模块进行硬件电路设计和电路波形仿真,运用sopc技术嵌入内核并创建了系统所需的外部设备FLASH和SRAM 软件通过使用NiosII运用C语言进行编程然后下载到硬件电路中,并在FPGA实验板上进行调试和验证。该设计采用自顶向下、混合输入方式(原理图输入—顶层文件连接和VHDL语言输入—各模块程序设计)实现数字钟的设计、下载和调试。
关键词:数字钟;FPGA;VHDL语言;C语言;SOPC技术;
1、选题背景和研究内容
近年来,随着数字集成电路技术的发展,用以前传统的方法进行芯片或系统设计已不能满足要求, 迫切需要提高设计效率。能大大降低设计难度的VHDL设计方法正在被越来越广泛的采用。VHDL 即超高速集成电路硬件描述语言,诞生于1982 年。1987年底, VHDL被IEEE和美国国防部确认为标准硬件描述语言。此后VHDL 在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年IEEE对VHDL 进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL 的内容,公布了新版本的VHDL,即IEEE标准的1076--1993 版本。现在, VHDL作为IEEE的工业标准硬件描述语言,已成为通用硬件描述语言。
现在电子钟产品可谓百家争鸣,市场上到处可见一些功能齐全的设备,可能基于单片机的比较多,用FPGA设计电子钟可能比较少。因为两个都可以实现同样的功能,而FPGA芯片的价格远比单片机高。出于利润,当然会选择开发成本少的产品。本次设计的目的是为了检验所学的知识(VHDL语言与SOPC技术)同时结合实践巩固知识,由于初涉该领域,相关的知识可能不够全面,实践的经验不够,所以本设计旨在能够实现数字钟的功能,对于各模块设计的优化和性能等方面没有多加考虑。
2、SOPC技术概述
SOPC(System On Programmable Chip)即可编程的片上系统,或者说是基于大规模FPGA的单片系统。SOPC的设计技术是现代计算机辅助设计技术、EDA技术和大规模集成电路技术高度发展的产物。SOPC技术的目标就是试图将尽可能大而完整的电子系统,包括嵌入式处理器系统、接口系统、硬件协处理器或加速系统、DSP系统、数字通信系统、存储电路以及普通数字系统等,在单一FPGA 中实现,使得所设计的电路系统在其规模、可靠性、体积、功耗、功能、性能指标、上市周期、开发成本、产品维护及其硬件升级等多方面实现最优化。SOPC
技术是一门全新的综合性电子设计技术,涉及面广,SOPC在电子设计技术上给出了一种以人的基本能力为依据的软硬件综合解决优化方案。
3、数字钟系统总体设计方案
3.1 数字钟的构成
该数字钟系统构成主要包括分频程序模块、时分秒计数模块、处理器及外设模块三个模块,其总体结构框图如图1所示
图1总体结构框图
3.2 数字钟的工作原理
数字钟电路的基本结构由两个60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计时,当计时到23时59分59秒时,再来一个计数脉冲,则计数器清零,重新开始计时。秒计数器的计数时钟CLK为1Hz的标准信号,可以由晶振产生的50MHz信号通过分频得到。当数字钟处于计时状态时,秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号,每一秒钟发出一个中断给CPU,CPU采用NIOS,它响应中断,并读出小时、分、秒等信息。CPU对读出的数据译码,使之动态显示在数码管上。
4、单元模块电路设计
4.1分频模块电路设计与实现
分频器是数字系统设计中的基本电路,根据不同设计的需要,我们会遇到偶数分频、奇数分频、半整数分频等。通常由计数器或计数器的级联构成各种形式
的偶数分频及非等占空比的奇数分频,实现较为简单。本文设计的分频器是利用VHDL硬件描述语言,通过QuartusⅡ开发平台,使用Altera公司的FPGA,设计了用50MHZ的时钟信号输入进行50000000分频得到1HZ的时钟信号,作为秒计数器的个位提供时钟信号。其原理图如图2所示。
图2 分频模块原理图
4.2计数模块设计与实现
秒计数器的计数时钟CLK为1Hz的标准信号,可以由晶振产生的50MHz信号通过分频得到。当数字钟处于计时状态时,秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号。其原理图如图3所示。
图3 计数模块原理图
4.3处理器及外设模块设计和实现
该模块CPU采用NIOSII处理器,程序存储采用4M的Flash,数据存储采用外部的512k的SRAM,使用Flash来保存NIOSII中运行的程序代码和FPGA的配置数据,处理器在复位后从Flash开始执行程序,使用IDE Flash Programmer 进行编程,将程序下载到Flash中,一个1位的I/O口接受中断信号,六个4位I/O口作为数据输入端口,六个8位I/O口作为数据输出端口,外接六个8位led数码管,通过分频后的时钟信号每一秒钟给CPU一个中断信号,CPU响应中断,并通过4位I/O口读出小时、分、秒等信息,对读出的数据进行译码,并通过8位I/O口使之动态显示在数码管上。原理图如图4所示。
图4 处理器及外设模块原理图系统总的原理图如图5所示
图5 系统总原理图
5、系统软件设计
中断译码程序流程图如图6所示
图6 中断译码程序流程图
6、系统调试和测试
分频模块的调试与测试,分频模块采用的VHDL 语言编写,对该模块进行功能和时序仿真,由于进行50000000分频的仿真比较困难,所以在此对2分频进行仿真.,图7为仿真输入波形图,采用输入时钟CLK 周期为10ns ,图8为仿真输出波形图,输出FN 时钟周期为20ns 。
图7 分频模块仿真输入波形图
开始 初始化I/O 口 开中断 清中断寄存器
中断注册
调中断子程序
主程序
开始 关中断 清中断寄存器 调译码子程序 开中断
中断子程序 开始
读I/O 口数据
写I/O 口数据
译 码
译码子程序