基于MC8051内核的便携幅频特性测试仪设计
2.3 系统接口模块
在该系统中,液晶模块采用ILI9320片上系统(SoC)驱动器[2],颜色显示深度为18位,分辨率为240RGB×320像素。系统采用i80总线结构控制液晶显示,即通过读使能(RDB)和写使能(WRB)两条控制线进行读写操作,数据线的宽度为8位。液晶模块中的控制信号和数据信号均为标准的TTL电平,可以直接与FPGA的I/O接口相连。
51内核具有8位总线宽度,通过内部端口映射的方式实现与FPGA模块的接口连接。为了实现FPGA采集数据的实时传输和显示,在接口设计中除了数据总线(data)以外,还需要地址总线(addr)和控制总线(w/r_en),按照程序设定的通信协议与FIFO中缓存的数据通信,实现数据传输和译码显示。系统接口模块的连接方式如图3所示。本文引用地址://m.amcfsurvey.com/article/194868.htm
3 系统软件设计
系统软件设计主要完成对正弦查找表IP核的初始化、峰值检波程序的设计、异步FIFO设计、FPGA与异步FIFO的通信协议设计以及同步显示等问题。软件设计总体框图如图4所示。
3.1 51内核的初始化配置
51内核采用完全同步的设计方案,在统一的时钟信号下控制每一个存储单元的读写操作。根据51内核处理速度的要求,在设计中使用20 MHz的时钟,时钟信号通过系统总时钟分频得到。设计中,首先在Keil编程环境中编译C语言代码,该代码主要负责LCD的初始化并将FPGA采集得到的实时数据进行译码和显示。编译后生成的.hex文件经相应的格式转换,生成FPGA的ROM资源可加载的.coe文件类型。
通过Xilinx提供的Core Generator工具,对IP核使用的DATA、XDATA和CODE三种存储区进行初始化配置,存储区的大小设置要以C语言程序所消耗的存储资源以及FPGA内部Block Memory资源总的大小而定。本系统中所有存储区的数据宽度均设置为8位,其中各存储区对应的地址信号宽度为7位、11位和14位。将CODE区配置为只读模式(Read Only),用于存放51内核的指令代码,并载入已经生成的.coe文件。经综合、翻译、映射、布局布线和生成编程文件完成51内核的设计过程[3]。
在51内核中实现彩屏液晶的显示控制和数据译码显示,可以大大减小因彩屏初始化时序复杂和FPGA在人机交互界面设计中的不灵活性而带来的难度[4]。同时,采用C代码对液晶屏进行操作具有广泛的通用性和可扩展性,当LCD的型号改变时,只需对初始化控制字稍作修改就可以实现显示控制。
3.2 峰值检波模块
系统采用软件编程的方法实现峰值检波的功能。首先将扫频区间等分,逐个测量等分点处的信号峰值并将计算出的增益存入FIFO中,当一次扫描结束后就能获得系统的幅频特性数据。
在对信号最值电压进行测量之前,由于信号很容易受到干扰,所以不排除信号会发生抖动的可能。基于这个原因,在测量前采用简易滤波对信号进行平滑处理,以减少最值测量的误差。这里采用取均值的方法。对输入信号依次取值、保存,形成一个新的信号,该信号电压由原输入信号的前两个时钟所得电压和后两个时钟所得电压之和取均值得到。对信号进行简易平滑处理后,所产生的新信号作为最值测量的基准信号。信号整形后得到标准的方波信号,该信号的一个周期刚好对应输入信号的两个周期,其中高电平和低电平各对应一个周期。
信号电压的峰峰值即为最大值减去最小值。但是,信号经过A/D转换器量化以后,所得到的值为12位偏码,扩展成为16位偏码,“1111111111111111”表示电压为2 V,“1000000000000000”表示电压为0 V,“0000000000000000”表示电压为-2 V。如果直接将最大值和最小值的偏码相减,结果会出现错误。因此采用先将最小值(电压负值)变为相应的电压正值的方法,即:
其中B表示最小值,A表示相应的电压正值,然后再将相应的电压正值与最大值相加,即为信号电压的峰峰值。
3.3 异步FIFO设计
A/D采集数据的数据率很高,本文中系统时钟为40 MHz,采集数据宽度为12位,这样每秒采集的数据量为40 M×12 bit/8=60 MB/s,如此高速的数据流远远超出了51内核的处理能力。为保证51内核读取数据的有效性和可靠性,系统中使用异步FIFO对数据进行缓存。FIFO的设计是通过配置FPGA内部的Block RAM资源实现的[5,6]。为了实现边采集边显示的目的,配置两块相同的FIFO,大小均为512×8 bit。在读写时钟的控制下,通过读使能和写使能信号的设置,使得在同一时刻始终有一块FIFO在进行写操作,而另一块FIFO将写满的数据读出。对于同一块FIFO不允许读写信号同时有效,这样接收和读取A/D数据并交给51内核处理可以同时进行,从而保证数据传输的连续性。
4 系统调试和测试
在完成了系统的硬件和软件设计以后,需要进行调试和测试。在测试时,使用一阶LC低通滤波网络,从所得到的频率特性曲线可以看出,系统主界面显示稳定,颜色信息丰富。当切换到系统状态设置或测试信息显示界面时,可以对激励信号的扫频范围、步进值、扫描时间等参数进行设置,同时还可以通过按键输入频点的方式查询各频点对应的增益,且具有较高的测试精度。
系统实现了在FPGA和51内核的平台下进行便携式幅频特性测试仪的总体设计。对设计中的核心模块进行调试,如51内核、TFT-LCD液晶、异步FIFO等。测试表明,系统工作稳定、测量精度高、实时性强,且硬件电路结构简单。目前系统已经应用到某型变压器绕组的幅频特性测试中,并取得了良好的测试效果。本文打破了以时序仿真和功能验证为目的的51内核研究,将51内核合理应用到电子系统设计实例中,并取得了成功,对于以后更加复杂的电子系统设计提供了参考和依据。
参考文献
[1] 徐慧,王金海,王巍.基于FPGA的8051IP核的设计与实现[J].计算机技术与发展,2009,19(3):42-45.
[2] A-Si TFT LCD Single Chip Driver 240RGB×320 Resolution and 262K color Datasheet Preliminary[R],ILI TECHNOLOGY CORP.
[3]MC8051IP Core Synthesizable VHDL Microcontroller IP-Core User Guide[R].http://oregano.at/services/8051.htm.
[4] 高恭娴,胡国兵.基于SoPC的彩色液晶显示控制器的设计[J].液晶与显示,2010,25(1):79-84.
[5] 褚改霞,潘卫,王栋.基于FPGA的多路数字信号分接器的设计[J].电子技术应用,2009,27(5):50-5.
[6] 唐清善,费玮玮.基于FPGA的高速异步FIFO的设计与实现[J].微计算机信息,2009(29).
评论