FPGA典型设计方案精华汇总_第1页
FPGA典型设计方案精华汇总_第2页
FPGA典型设计方案精华汇总_第3页
FPGA典型设计方案精华汇总_第4页
FPGA典型设计方案精华汇总_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

FPGA1型设计方案精华汇总(一)2012年05月30日11:40来源:电子发烧友网作者:电子大兵我要评论⑴标签:FPGA1786)FPG破计(1)信号发生器(121)一、基于FPGA勺DDS言号发生器设计引言信号发生器又称信号源或振荡器, 在生产实践和科技领域中有着广泛的应用。 能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。函数信号发生器的实现方法通常是采用分立元件或单片专用集成芯片, 但其频率不高,稳定性较差,且不易调试,开发和使用上都受到较大限制。随着可编程逻辑器件(FPGA的不断发展,直接频率合成(DDS技术应用的愈加成熟,利用 DDSM理在FP-GA平台上开发高性能的多种波形信号发生器与基于 DDS芯片的信号发生器相比,成本更低,操作更加灵活,而且还能根据要求在线更新配置,系统开发趋于软件化、自定义化。本文研究了基于 FPGA勺DDS言号发生器设计,实现了满足预定指标的多波形输出。1DDS基本原理DDS建立在采样定理基础上,首先对需要产生的波形进行采样,将采样值数字化后存入存储器作为查找表,然后通过查表读取数据,再经 DXA转换器转换为模拟量,将保存的波形重新合成出来。DDS1本原理框图如图1所示。]S1DDS基本工作原理框图除了滤波器(LPF)之外,DDS系统都是通过数字集成电路实现的,易于集成和小型化。系统的参考时钟源通常是一个具有高稳定性的晶体振荡器, 为各组成部分提供同步时钟。频率控制字(FSW实际上是相位增量值(二进制编码)作为相位累加器的累加值。相位累加器在每一个参考时钟脉冲输入时,累加一次频率字,其输出相应增加一个步长的相位增量。由于相位累加器的输出连接在波形存储器( ROM的地址线上,因此其输出的改变就相当于查表。这样就可以通过查表把存储在波形存储器内的波形抽样值(二进制编码)查找出来。ROM勺输出送到D/A转换器,经D/A转换器转换成模拟量输出。

2系统总体方案设计该设at以FPGAFF发平台为核心,将各波形的幅彳1/相位量化数据存储在 ROM,按照设定频率,以相应频率控制字k为步进,对相位进行累加,以累加相位值作为地址码读取存放在存储器内的波形数据,经 0/A转换和幅度控制、滤波即可得到所需波形。波形发生器采取全数字化结构,用硬件描述语言 Verilog设计实现其频率可调可显示。经开发平台的 D/A转化和外加滤波整形处理波形数据,理论上能够实现任意频率的各种波形。系统总体设计方框图如图2所示。波形数楣产工电儿图2 系统总体设计方框系统按工作原理和控制对象的先后分为三个功能单元:波形数据产生单元、 D/A转化单元和滤波整形处理单元。波形数据产生单元除具有波形数据输出功能外,还有频率设置和输出显示功能。波形信号频率可设置范围为 0〜99999999Hz,系统时钟采用外接晶体振荡器40MHz时钟脉冲,频率稳定度优于 10-4输出采用8位LED数码循环动态显示。 D/A转换单元负责对从ROMBE里读取的波形数据进行 D/A转换,对D/A转换器件的选用从建立时间、位数、转化误差和转换时间等四个方面考虑。滤波整形处理单元完成对 D/A转换的模拟波进行平滑,滤除杂波和高频干扰, 补偿频带损耗和幅度损失,最终输出低误差、 高质量、满足题设要求的波形。

数据输出处固1/僧席输入用制部分数据转换处理波型

选择部分沂Jl0]拨研升美选择入 数码显东输出部分1-领率捽制字部分出弦波波也

数据表V和低ADDR[1tj:O]数据输出处固1/僧席输入用制部分数据转换处理波型

选择部分沂Jl0]拨研升美选择入 数码显东输出部分1-领率捽制字部分出弦波波也

数据表V和低ADDR[1tj:O]:.柏波波形

数据&波形数据I

地址入川力波波形

数据表波形数ffiROM模跳图3波形数据产生单元设计结构图3系统功能单元实现3.1波形数据产生单元波形数据产生单元是信号发生器设计的主体。 在此,采用DDSI(理设计的信号发生器能完成三种波形(正弦、三角和方波) 数据的产生,而且根据控制信号还可完成选定波形指定频率的输出。波形数据产生单元按功能实现上的相互联系可划分为频率控制字生成模块、 相位累加器模块和波形数据ROMI模块,如图3所示。其中,频率控制字生成模块可根据输入产生指定频率字,同时显示输入频率数字。相位累加器模块负责对所选波形的相位寻址, 以频率控制字作为步长反复进行累加运算。 波形数据ROMBE模块存放三种波形的幅值/相位量化值,通过地址选择相应波形的数据。系统输入控制使用4X4键盘.键盘主要按键功能介绍如下:“0〜9”:数字键,设定信号频率;“确定”:用于对波形信号设置的确认,波形信号的设置必须“确定”后才有效;“一”:删除已输入信号频率数字的最后一位,用于修改设置的频率;“清零”:将频率数字快速全部清零;“T”:步进增大控制;:步进减小控制。设定频率输出范围为1kHz〜10MHz,频率步进为50Hz。系统输出采用8个LED数码管,以扫描方式显示(单位为Hz)频率数字。根据DDSM理,以步进值50Hz作为频率控制字1,那么最大值10MHzM应的频率控制字为200000,用18位二进制数值就可以表示(218》200000)。从抽样值恢复出原波形数据,理论上每个周期波形数据至少抽取 2个点,考虑到实际应用时受频率损耗、线间串扰等因素的限制,该设计采用 22b的频率控制字和相位累加器,4Kb的8位波形ROMa,取相位累加器输出的高 12b寻址波形数据,三种波形按幅值/相位对应关系分别存储 782个数据。故各波形数据单位周期有 800768(782X210)个相位状态,完全满足任一波形在单位周期内取 4个幅值点的要求,可保证即使输出最大频率的波形仍能达到较好的效果。 波形选择功能由两位开关组合实现, 共有四种状态,其中三组用来表征不同的波型,另一组留作扩展波形用。2D/A转换单元数/模转换单元是继波形数据产生单元之后, 将数字量形式的波形幅值转换成所要求的合成频率的模拟量形式信号。DAC俞出信号实际上是阶梯模拟信号,需在数/模转换后利用低通滤波器对波形进行平1t处理。在此,采用 ADI公司生产的单片双8位CMO乘法数/模转换器AD7528,线性度达到1/2,转换时间达到纳秒级,可以很准确地进行 10MHz信号的量化运算。3滤波处理单元滤波器是一种能通过有用频率信号而同时抑制 (或衰减)无用频率信号的电子装置。由于运算放大器具有近似理想的特性,且可以省去电感,得到接近理论预测的频率响应特性。构成有源滤波电路后还具有一定的电压放大和缓冲作用, 并能减小体积。综合考虑,系统采用运算放大器SL560构成二阶低通滤波器。4系统功能仿真和验证分析1频率控制字生成模块仿真与分析频率控制字的生成直接影响着波形数据的寻址, 该模块负责快速记录并实时显示输入的频率数字,准确计算得到相应的频率控制字。系统键盘为高速动态扫描(频率为 200Hz),采用状态机设计,设置了按键去抖动功能。在 FPG所发平台对该模块进行功能验证,整体无误操作产生,几乎没有时滞效应,按键的防抖动效果也良好,达到了预期的目的。2相位累加器模块仿真与分析相位累加器用于实现相位累加, 并存储其累加结果。当前,相位累加器的值和时钟周期到来后的相位累加器的值相差 k(k为频率控制字)。该模块的仿真波形如图 4所示。

DpiaoDuI的』u St。*4000u“ 9 I I I0Hd.fir.

di0glSitijuu[mrLHjuuLRLPTrL-JuuumrLrDpiaoDuI的』u St。*4000u“ 9 I I I0Hd.fir.

di0glSitijuu[mrLHjuuLRLPTrL-JuuumrLr丁urn相位累加器的仿真就图3实验波形观测与误差分析信号发生器功能验证无误,用示波器观测实验波形如图 5所示。图5示波器测试信号发生器的生成波形检测输入频率为0〜10MHz时,波形形状均良好,未出现明显失真。计算理论误差为0.095%,在实测中发现,波形数字的误差相对很小,不足0.1%。由于滤波整形电路存在高频耦合通路,产生线间串扰,对滤波效果形成了不利影响,因此滤波器设计必须满足频带宽,截止特性好,抗干扰性强等特性。5结语介绍了以直接数字频率合成技术 (DDS为基础的波形信号发生器工作原理和设计过程,并在FPG顺验平台上设计实现了满足各功能指标的信号发生器。系统硬件除需外加滤波整形电路外,其余部分均可在FPGAFF发实3佥系统KHk310上集成开发,系统软件可在Quartus下编写代码,实现数据信息处理和控制操作等功能。整体开发环境成熟,应用工具齐全,随着FPGA性价比的不断提高,基于FPGW台开发信号发生器将逐步走向标准化、 规模化和产品化。现代电子和通信技术的发展, 对信号发生器提出了更高、 更严格的要求。除了对信号频率范围、带宽和频率分辨率的严格限制外,对信号的波型及调制特性等也有着苛刻的规定。研究和开发具有更高性价比的信号发生器将是当前和今后一段时间内亟需解决的课题。 这里旨在建立一种基于FPG闸简单数字信号发生器设计方法。若能充分利用FPG颂大的数据运算处理能力以及编程灵活、运行速率快等优点,合理整合IP核资源和SoPC技术,简化设计结构,一定可以设计出功能多样、性能更加出色的信号发生器。FPGAft型设计方案精华汇总(一)(2)2012年05月30日11:40来源:电子发烧友网作者:电子大兵我要评论⑴标签:FPGA1786)FPG破计(1)信号发生器(121)二、基于FPGA勺信号发生器设计以FPGA芯片为载体, 通过QuartusII的LPM_ROMI块和VHDL语言为核心设计一个多功能信号发生器,根据输入信号的选择可以输出递增锯齿波、递减锯齿波、三角波、 阶梯波和方波等5种信号,通过QuartusII软件进行波形仿真、定时分析,仿真正确后,利用实验板提供的资源,下载到芯片中实现预定功能。信号发生器又称为波形发生器, 是一种常用的信号源,广泛应用于电子电路、通信、控制和教学实验等领域。它是科研及工程实践中最重要的仪器之一, 以往多用硬件组成,系统结构比较复杂,可维护性和可操作性不佳。 随着计算机技术的发展, 信号发生器的设计制作越来越多的是用计算机技术,种类繁多,价格、性能差异很大。用 FPGA或CPLD来实现,它的优点是可以进行功能仿真, 而且FPGA和CPLD的片内资源丰富,设计的流程简单。用FPGA所构成的系统来产生波形信号,这个系统既能和主机系统相连,用相应的上层软件展示波形信号,又方便程序的编写,而且还有A/D0809接口可以产生模拟信号的输出和外面的示波器相连。1正弦信号发生器的LPM定制正弦信号发生器由计数器或地址发生器( 6位)、正弦信号数据ROM(6位地址线,8位数据线, 含有64个8位数据,一个周期)、原理图顶层设计和 8位D/A(实验中用DAC0832代替)。其框图如图1所示。其中信号产生模块将产生所需的各种信号,这些信号的产生可以有多种方式,如用计数器直接产生信号输出,或者用计数器产生存储器的地址, 在存储器中存放信号输出的数据。信号发生器的控制模块可以用数据选择器实现, 用8选1数据选择D/A

转换器器实现对5种信号的选择。D/A

转换器时钟信号一►tJ 嫁ifi/iI选择信号 ——J图i信号发生器结构框图最后将波形数据送入D/A转换器,将数字信号转换为模拟信号输出。 用示波器测试D/A转换器的输出,可以观测到 5种信号的输出。定制初始化数据文件QuartusII能接受的LPM_ROM!I块中的初始化数据文件的格式有两种:。 mif格式文件和。hex格式文件。实际应用中只要使用其中一种格式的文件即可。 下面采用。mif格式文件,调出产生ROM数据文件大小的选择窗。根据64点8位正弦数据的情况,可选ROM的数据数Number为64,数据宽Wordsize取8位。单击OK按钮,将出现图2所示的空的。mif数据表格,表格中的数据格式可通过鼠标右键单击窗口边缘的地址数据弹出的窗口选择。Addr+2+3+4+5+6+70 匕552542522492452392332258217207I197k4162150137I16_124112:99"口一645343 ]24_26 ]4■1_032b一1I铲勺19弱3440_43536475[87,99112124,48_137150162174186197207)21756225233239245249_252254255图2.mif 数据表格将波形数据填入mif文件表中也可以使用 QuartusII 以外的编辑器设计MIF文件,其格式如下:#include《STdio.h»#include"math.h"main(){inti;floats;for (i=0;i《1024;i++){s=sin(atan(1)*8*i/1024);printf("%d:%d;\n",i,(int)((s+1)*1023/2));}}把上述程序编译成程序后, 可在DOS命令行下执行命令:romgen»sin_rom.mif;定制LPM元件打开MegaWizardPlug_InManager初始对话框,选择Createanewcustom…项。单击Next按钮后,选才iStorage项下的LPMROM再选择ACEX1K器件和VHDL语言方式;最后输入ROM文件存放的路径和文件名:F:\singgnt\datarom (定制的ROM元件文件名),单击Next按钮,选才iROM控制线、地址线和数据线。这里选择地址线位宽和ROM中数据数分别为6和64;选择地址锁存控制信号inclock。

对于地址信号发生器的设计。 方法一:用VHDL语言设计6位计数器,产生其元件符号;方法二:仍采用LPM定制的方法。完成顶层设计按图3画出顶层原理图,然后进行编译,波形仿真如图 4所示。簿Assignme...|eIn-Syste...eCompilatL.]网Mngt.cd产|尊Simdabo...|垣sinp.stpagIn-S网e., |gSdTPUT CNT6Birwtl"cLrftjJ71t■nCNT6Birwtl"cLrftjJ71t■n4®ddressfS..O!->mdocl(data「omQUTRUT…七图3简易正弦信号发生器顶层电路设计AAAAAAAAJ\AAAMQIU?erenr n_r可即 "LnLTLnrLrLTLrLnLrLiy17rLTLrmLRnjmrurmM副石 匡里巴 j ja/,E/A士工.J f J r| pH 2」号触 JOM联 ■加盘 5。招耀一V霞 州会国善刚1!听日箕 」$里噂—田晌岬;I—时泊—«I 琼M •图4当前工程仿真波形输出对当前设计通过执行QuartusII的命令Create/Update/CreateSymbolFilesforCurrentFile,可以为设计电路建立一个元件符号,以便被顶层设计多功能信号发生器所调172其他信号部分原程序VHDL硬件描述VHDL硬件描述语言进行设计。LIBRARYIEEE;--递增锯齿波的设计USEIEEE.STDLOGIC1164.ALL;USEIEEE.STDLOGICUNSIGNED.ALLENTITYsignal2IS-- 递增锯齿波signallPORT(clk,reset:INstd_logic;--复位彳言号reset,时钟信号clkq:OUTstd_logic_vector(7DOWNTO0);―输出信号qENDsignal2;ARCHITECTUREbOFsignal2ISBEGINPROCESSclk,reset)VARIABLEtmp:std_logic_vector (7DOWNTO0;BEGINIFreset='0'THENtmp:="00000000”;ELSITrising_ege(clk)THENIFtmp="11111111”THENtmp:="00000000”;ELSEtmp:=tmp+1;--递增信号的变化ENDIF;ENDIF;q«=tmp:ENDPROCESSENDb;LIBRARYIEEE;一方波的设计USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALLentitysignal5is--方波signal5PORT(clk,reset:instd_logic;--复位信号reset,时钟信号clkq:outstd_logic_vector(7DOWNTO0);--输出信号q,8位数字信号ENDsignal5;ARCHITEECTUREaOFsignal5ISSIGNAL;a:std_logic;BEGINPROCESSclk,reset)YARIABLEtmp:std_logic_vector(7downto0);BEQINIFreset='0'thena«='0';elsifrising_edge(clk)THENIFtmp="11111111”THENtmp:="00000000”;ELSEtmp:=tmp+1;ENDIF;iftmp«="10000000”thena«=T;elsea«='0';ENDIF;ENDIF;ENDPROCESSPROCESSclk,a)BEGINIFrising_edge(clk)THENIFa='1'THENq«="11111111”;ELSEq«="00000000”;ENDIF;ENDIF;ENDPROCESSENDa;FPGAft型设计方案精华汇总(一)(3)2012年05月30日11:40来源:电子发烧友网作者:电子大兵我要评论(1)标签:FPGA1786)FPG破计(1)信号发生器(121)3顶层电路的设计

将上述6个模块生成符号,供顶层电路调用。这些模块分别是:递减锯齿波信号产生模块signall、递增锯齿波信号产生模块signal2、三角波信号产生模块signal3、阶梯波信号产生模块signal4、方波信号产生模块signal5和数据选择器mux51。顶层电路的连接如图5所示。忆诿®:W多巴resetSIGNAL!QI7.0Ir(:LK9S1GNAI5QP,0|■ ———F-S1GNAL4CLKRESET3 pH*MV图5信号发生器顶层电路CLKRESETtSICNAN2\""ICLK QP0]r—[RESETCLKRESETMUX51SELI2.0]Dll7„0]D2[7..O]D3I7..0]E>4|7..0|D5I7OJ4D/A转换器的连接选择一个D/A转换器,将数据选择器的输出与 D/A转换器的输入端连接。 D/A转换器的可选范围很宽,这里以常用的 DAC0832为例。DAC0832的连接电路如图6所示。

DAGO832图6DAC0832的连接电路5实现与测试信号发生器顶层电路的仿真波形如图 7所示,这里只就输入选择信号等于 5时的情况进行仿真,此时输出波形是方波,输出的数字信号为周期性的全 0或全1。图7信号发生器顶层电路的仿真波形信号发生器的底层电路模块也可以分别进行仿真, 例如对阶梯波信号产生模块 signal4进行仿真,仿真波形如图8所示,输出的数字信号为阶梯状变化。图8阶梯波信号产生模块 signal4的仿真波形6结束语硬件电路设计主要是设计相关模块的设计思想的可视化, 是相关模块的电路图的汇总和其相关仿真波形的集锦,该部分条理清晰,思路明确,从中我们可以清晰地看到该设计方案的具体模块和整个设计的原理结构实图; 程序设计这一部分主要阐述该设计的设计方法与设计思想,进一步从软件设计上揭示设计构思, 主要包含了整个设计所用到的模块的硬件描述语言的设计, 本文设计思路清晰,通过QuartusII软件进行波形仿真成功,特别是正弦信号发生器的LPM定制对于编程不是特别强的人员提供另一种途径来实现,加深理解 EDA的层次设计思想,很好的把握住了教学的改革方向,更好的锻炼了学生理论联系实践的能力。三、基于FPGMVHDL^JLED点阵汉字滚动显示设计方案汉字滚动显示器的传统设计方法是用单片机来控制的,虽然单片机方案具有价格低廉,程序编程灵活等特点,但由于单片机硬件资源的限制,未来对设计的变更和升级,总是要付出较多研发经费和较长投放市场周期的代价, 甚至有可能需要重新设计。 况且,在以显示为主的系统中,单片机的运算和控制等主要功能的利用率很低, 单片机的优势得不到发挥,相当于很大的资源浪费。采用EDA技术的自顶向下的模块化设计方法, 借助相关开发软件,例如Qualtusn软件,将硬件描述语言一一VHDL程序固化于具有丰富I/O口、内部逻辑和连线资源的FPGA(现场可编程门阵列)中。该技术具有系统设计效率高、集成度好、保密性强、易于修改、易于实现等优点,成为当今数字系统设计主流技术。 此方式所制作的LED点阵控制器,由于是纯硬件行为,具有速度快、可靠性高、抗干扰能力强、开发周期短等显著优点。1EDA点阵显示汉字原理以8X8的LED点阵为例,8X8的LED点阵是由64个发光二极管按矩阵形式排列而成,每一行上的发光管有一个公共的阳极 (或阴极),每一列上的发光管有一个公共的阴极(或阳极),一般按动态扫描方式显示汉字或图形。 扫描分为点扫描、行扫描和列扫描三种方式。行扫描需要按行抽取字型码, 列扫描则需要按列抽取字型码。 为满足视觉暂留要求, 若使用点扫描方式,其扫描频率必须大于 16X64=1024Hz,周期小于1ms。若使用行或列扫描,则频率必须大于16X8=128Hz,周期小于7.8ms。由于所用实验板上提供有 1kHz的时钟,本例设计中利用该时钟进行扫描,使每行扫描时间为 1ms,实验结果显示亮度合适。现以行扫描为例简单说明动态扫描显示的原理。图 1给出汉字“热”在点阵为列共阳时的行字模。

工作时先将要扫描行的点阵字模从各列上输出,再让译码器选中(扫描)该行,使本行得以显示,接着再送下一行数据,再使下一行有效,直到8行全被扫描一遍。至此,一幅完整的文字信息就显现出来,然后再反复扫描这8行直至显示新的信息。以下设计采用行扫描方式实现滚动显示。二IIIHHOBOIOOJ010BHIHUUBoioominRwoiuoiIBOIOIOHGB10010J01B图1汉字的像素点图2硬件原理图整个电路由五大部分组成:时钟计数模块 GEL_CLK存储汉字字模的ROMH块ROMZI数据分配器模块MUX移位模块YW及显示模块XIANSH-I。时钟计数模块用于产生整个电路所需要的时钟及其对时钟的计数值,例如:移位时钟 CLK丫叫移位方f数器CNTYW字计数器CNTWORD显示扫描计数器CNTSMROMZ模块是由Qualtusn中的LPM1PORTROM制成,用来存储8个待显示的汉字。MUX莫块用于在扫描时钟及扫描计数器的作用下,从 ROM中读出一个汉字的8个行字模信息,送给移位模块YWYW莫块在移位时钟及移位计数器作用下,根据SELECT言号选择对读出的字模信息,进行相应的移位(左移、右移、上移、下移)后,最后送显示模块DISP驱动LED点阵显示汉字。原理图如图 2所示。GECLK(LKSMCNTWORD口』时」叩.川E邓可CLKWADDRESS[:01YW邺川(LtYW顺工IADORES(LKSMCNTWORD口』时」叩.川E邓可CLKWADDRESS[:01YW邺川(LtYW顺工IADORES第Q1rl「CLK.5M吼甲MCNT.蚓刈风茅山删珂Wp..0|阻不⑼帆通用flUp.,0]啊明帆甲划『明Wl.|p.O]WL2[1..O]肌*Q]机学⑼川北Q付]4;⑼ivLflpq讥如1的_网?用 DATA[7..O]」WLI[7q聊川…]吼?[7刈—UVLjp.0]够重0)1 —哪却出1—,—帆印网WL8[J.D]L:YW'LI[7J]YWU[7』YWUp.S]M,『5|YW叩.斗YWL7[7,J|丫娥『.母mn—一"□DAJAp.Oi.....IW'.tK二 self0|图2点就制豺蚓FPG颇型设计方案精华汇总(一)(4)2012年05月30日11:40来源:电子发烧友网作者:电子大兵我要评论(1)标签:FPGA1786)FPGA设计(1)信号发生器(121)3模块设计及时序仿真时钟计数产生模块时钟计数产生模块由1kHz的输人时钟为基准,进行17位的循环计数CNT[16..O]。该时钟,既是动态扫描显示的时钟,也是从 ROM中取一个字8个字模的时钟,对之进行的3位循环计数作为扫描显示计数器和取一个字的字型码计数器。 CNT[16..O]中的CNT[9]是对该时钟的1024分频,将其作为移位时钟CNT_Y皿周期约为ls。CNT:13-lO]作为4位的移位计数器,是对移位时钟CLK_YW的计数,也是对移位位数的统计。 16个状态使一个汉字逐列移进点阵,又逐列移出。每经过 16个移位时钟,将会显示完一个汉字。 CNT[16..14]作为3位的取字计数器。CNT[16--14]&CNT[2..O]作为ROM地址发生器。ROMZI模块利用LPM参数化模块库中单口ROM,利用Qualtusn中的MegaWizardPlug-InManager定制而成,定制前首先要制作 LPMROM初始化文件,其中存储待显示汉字的字模数据,然后按照LPMMegaWizardPlug-InManager的向导提示,结合设计要求进行定制。图3ROM中存储字模数据图4数据分配模块的时序分析波形图图3为所定制ROM中的初始化汉字元旦生日开心快乐”的字型码。数据分配模块MUX要求能在8个时钟作用下,从ROM中读出一行(一个汉字的8个字型码)分别送到数据分配器中的WLl〜WL8输出端。图4为数据分配模块在扫描时钟作用下读取的字模数据,比较图3和图4可知,仿真结果正确,能满足题目要求。移位模块YW移位模块YW是整个设计的核心,行扫描实现左移,是通过每来一个移位时钟,将每一行的字模按位左移一位,扫描时钟到来时送出移位后的新字模。通过 8次移位,可将一个汉字移出点阵平面,按类似的道理,也可以将一个汉字经8次移位后移进点阵平面。 本例(图2)中,CNTYW为移位时钟的计数值, 以WLl〜WL8为欲显示汉字的原始字模, L10〜L80为移位后从列上送出的8行显示字模信息,LLl〜LL8为8个原始字模信息未送出位的暂存信号。设计中需要16个移位时钟,通过前8个时钟将WLl〜WL8字模移进LED点阵平面,再经后8个时钟,将汉字又一位一位地移出。 移位设计参考文献中有关移位寄存器的设计,分计数值为“000师『非"0000M部分处理,对第一行字模的处理为:IFCNTYW="O0OO"THENLIOV="0000000"&WL1⑺;LL1V=WLM6DOWNTO0)&』0,ELSEL10<=L10(6DOWNTOO)^LL1(7);LL1<-LLI(6DOWNTOO)&b:ENDIF其他行可按相同方法处理,具体参见如下的程序:IFCNT_YW=〃000i)”THENL10<=-f000tf/&-WL1(71iLL1<=WL1(SDOWNTO0)L20〈二“0000"&WL2(7)也L2V=WL1(6DOWNTO0)&’0、L30<=w0000"WL3(7)fLL3<=WLI<6DOWNTO0)&L40V="0000"&WL4(7)?LL4V=WL1(6DOWNTO0)&L50<-"0000,&WL5(7);LL5V-WL1(6DOWNTO0)&’0' .L60V“0000"&WL6(7hLL6<=WLl(6DOWNTO0)及L70<-w0000"&>WL7(7)rLL7<-WL1(6DOWNTO0)&J0J; ,L80V:J0000"&WL8(7);LL8V-WL8(6DOWNTO。)&.'0:ELSEL10<=L10(6DOWNTO0)&&LL1⑺*LL1V=LL1(6DOWNTO0)&'0,L20<=L20(6DOWNTOO)&&LL2⑺手LL2<=LL2(6DOWNTO0)&'07L30<=L30(6DOWNTOO)&&LL3(7):LL1<=LL3(6DOWNTO0)&-r0SL80<=L80(6DOWNTO0)&&XL8(7);LL8<=LL8(6DOWNTO0)&'0、ENDIF;右移处理方法与上面左移相反,如对第一行可按如下方法处理:IFCNT_YW="OOO0〃THENL10<=WL1(0)&”00000。0"।LL1V='O'&.WL1C7DOWNTOD;ELSEL10<=LLl<0)&X10(7DOWNTOl>FLLl<=fO,&LL1(7DOWNTO1);ENDIF;上移时的部分程序按以下思路编制: L10〜L7皿CNT_YW为初态“0000时,各信号均赋值X“00;非初态时,均进行上移一位。即:L10《=L20;L20«=L30;-;L60«=L70;L70«=L80;对于L80,在汉字移进LED过程中即前8个状态各移进一个新行,在移出LED即后8个状态时,都补进X"00:程序如下:IFCNT_YW="0Q00"THENL10<=XWf;L20<=X"00Z…L70<=X"00。ELSEL10<=L20;L20<=L30»L30<=L40? L70<=UOjENDIF;IFCNT_YV^3)=WTHENCASECNT.YWC2DOWNTO0)ISWHEN"000'=>L80<=WL1;WHEN“001”~>L80<-WL2fWHEN"110"一>L80<=WLY^WHEN"ill"=>L80<=WL8fWHENOTHERS=>NULL;ENDCASE;ELSEL80<=X"00]ENDIF;下移程序可按相反思路去编。显示模块DISP设计显示模块DISP是以CNT_SM为扫描计数器,是对1kHz进行三位循环计数,由前述的时钟计数产生模块产生,WLl〜WL8为待送出显示的8个8位字型码,由前述的移位模块 YW提供;SW[7..O]为行扫描输出信号,连接至点阵的 8个行;DATA[7..0]为行扫描时对应的列输出字型码,对外连至点阵的8列。该模块参考文献中数码管动态显示程序进行设计如下:LIBRARYIEEE;USEIEEE.STDLOGIC1164,ALLgUSEIEEE.STD二LOGIC]UNSIGNDE.ALL;ENTITYD】SPISPORT(~CNT_SMsINSTD_LOGIC_VECTOR(2DOWNTO0)fWL1,WL2,WL3,WL4,WL5,WL6,WL7,WL8;INSTD_LOGIC_VECTOR(7DOWNTO0);DATA:OUTSTD_LOGIC_VECTOR(7DOWNTO0>;SW:OUTSTDLOGICVECTOR(7DOWNTO0))?END:ARCHITECTUREONEOFDISPISBEGINPROCESS(CNTSM)BEGIN ):CASECNT_SMISWHEN"000"=>SW<="00000001”;DATA<=WL1|WHEN"001"=>SW<=^00000()10";DATA<=WL2;WHEN'010"=>SWV="00000010";DATA<=WL3]WHEN"011"=>SWV—"0000001。";DATA<=WL4;nWHEN"100"=〉SW<="0000001。”;DATAV=WL5;WHENfr10r=>SW<-"10000000";DATA<=WL6.WHEN110"—>SWV="00000010]DATA<WL7;WHENT1 >SW<v'oooooioZDATA<=WL8gWHENOTHERS->NULLrENDCASE;ENDPROCESS,END;4硬件实现上述各模块分别在Qualtusn中通过了仿真验证,最后对整体设计进行了硬件验证。将设计载入KH31001开发板的Cyclone工系列EPlC6Q-240C8FPGA^件中,实验证明汉字滚动显示扫描情况均正常,能够按照预想进行移位显示,这说明。 FPGA的内核硬件工作良好,可以正确地实现所要求的设计功能FPGAft型设计方案精华汇总(一)(5)2012年05月30日11:40来源:电子发烧友网作者:电子大兵我要评论(1)标签:FPGA1786)FPGA设计(1)信号发生器(121)5系统扩展本文是针对8X8点阵设计,故每次取8个字形码,如果是16X1族阵,将RONZI中存储的字形码改为16位,数据线改为16位,一个汉字需要16个16位的字形码,数据分配模块MUX、移位模块YW、显示模块DISP,均要将输入输出数据中的原来的 8位改成相应的16位。扫描及取字型码计数器CNT_SM应改为CNT计数器的低4位。一个16X1族阵汉字的移进移出共需32个状态。由5位的计数器提供。如用CNT[16..0]中的14〜10位作为该计数器,这可在时钟计数器产生单元CLK_GE中应做相应修改,字计数器CNTWORD^^^每取16个字进行加1统计。显示DISP部分的译码器要由3-8译码改为4-16译码。显示的汉字信息越多, ROM的地址线位数越多,字计数器CNT_WORD应在时钟计数器产生单元GE_CLK中,将相应的计数器位数扩展,由CNT计数器的最高位到位15来承担。若还是8个汉字,计数器应为CNT17..O],CNT[17..15]为字计数器;若为16个汉字,计数器应为CNT[18..O],CNT[18..15]为字计数器,…,依次类推。6结语本文在KH31001开发板上实现了基于Altera公司的CycloneI系列FPGA^EPlC6Q240C8硬件及VHDL硬件描述语言设计的LED点阵汉字滚动显示,能在8X映阵上滚动显示先旦生日开心快乐”奔汉字。文中从LED点阵显示汉字的原理阐述出发, 给出了点阵汉字滚动显示控制器的原理图,部分模块的 VHDL源程序及时序仿真图,并能由按键选择其滚动方式:左移、右移、上移、下移等,给出了系统扩展成 16X1族阵汉字滚动的改动思路。从文中描述的系统扩展方案中看出, 当系统显示字符个数变化时, 只需对控制逻辑和连接关系做适当的修改,再将修改完成的程序下载到器件即可, 显然,系统的维护和修改是极其方便和容易的,本文对同类设计也具有一定的参考价值。四、数字控制振荡器(NCO)白FPGA实现NCO(NumericallyControlledOscillator)是用于产生一个理想的、数字可控的正弦或余弦波的数字控制式振荡器,其实现方法有实时计算法和查表法等多种。 实时计算法的正弦波样本以实时计算产生,该方法因其计算需要耗费很多时间, 因而只能产生较低频率的正弦波,而且存在计算精度与计算时间的矛盾。 由于在需要产生高速的正交信号时, 实时计算法将无法实现。因此,在实际应用中一般采用最有效、最简单的查表法,即事先根据各个 NCO正弦波的相位计算好相位的正弦值,并按相位作为地址信息存储该相位的正弦值数据。1NCO的基本原理在通过相位累加产生地址信息时, 通常需要输出当前时刻的相位值所对应的正弦值, 即以参考频率源对相位进行等可控间隔采样。 众所周知,理想的正弦波信号S(t)可以表示成:S(1)hIcos ⑴式(1)说明,信号s(t)在振幅A和初相。确定之后,其频率可以由相位来唯一确定。即:-271ft Q)NCO就是利用式(2)中。(t)与时间t成线性关系的原理来进行频率合成的,也就是说,在时间t=4t间隔内,正弦信号的相位增量 △。与正弦信号的频率f可构成一一对应关系,也就是说,对式(2)两端进行微分后有:堂口2根(U由上面的讨论可知:其中,△。为一个采样间隔at之间的相位增量,采样周期A/—,~~--Fg。故式(3)可改写为:(4)由式(4)可知,如果可以控制△0,就可以控制不同的频率输出。由于△。受频率控制字FCW的控制,即:,所以,改变FCW就可以得到不同的输出频率f0,然后经代换处理可得如下方程:

上冬& (5)当31时,札齐笫elecfanscorn电3反烧立国品式(5)和式(6)中的L为相位累

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论