特权同学

例说FPGA连载86:工业现场实时监控界面设计之波形产生模块代码解析

0
阅读(1742)

例说FPGA连载86:工业现场实时监控界面设计之波形产生模块代码解析

特权同学,版权所有

配套例程和更多资料下载链接:

http://pan.baidu.com/s/1c0nf6Qc

1.jpg

该模块实现NIOS IIAvalon-MM总线从机接口,将NIOS II写入的数据缓存到寄存器或双口RAM中。该模块从NIOS II获取的数据将实现LCD显示的波形窗口的控制。

该模块的基本功能框图如图17.13所示,Avalon-MM总线从机逻辑接收到的数据或者直接用于LCD的波形窗口控制,或者锁存到双口RAM中用于波形点的显示。

2.jpg

17.13波形控制器模块功能框图

该模块的接口定义如表17.1所示。

17.1波形控制器模块信号接口定义

信号名

方向

功能描述

avawave_cs_n

input

Avalon-MM总线片选信号,低电平有效。

avawave_wr_n

input

Avalon-MM总线写使能信号,低电平有效。

avawave_addbus[9:0]

input

Avalon-MM总线地址信号,可寻址访问0-1023

avawave_datbus[7:0]

input

Avalon-MM总线数据信号。

wave_rclk

input

双口RAM读时钟信号。

wave_rden

input

双口RAM读使能信号

wave_datbus[7:0]

output

双口RAM读出数据,即当前波形高度数据。

wave_xs[9:0]

output

波形显示起始X坐标。

wave_ys[9:0]

output

波形显示起始Y坐标。

wave_xe[9:0]

output

波形显示结束X坐标。

wave_ye[9:0]

output

波形显示结束Y坐标。

wave_fcor[15:0]

output

波形显示前景色。

wave_bcor[15:0]

output

波形显示背景色。

wave_disp

output

波形显示使能信号,高电平有效。

Avalon-MM总线可读写的寄存器及其地址定义如表17.2所示。

17.2波形控制器模块可访问寄存器定义

寄存器

地址

功能描述

dram_wrdata[7:0]

10'd0-10'd999

双口RAM的写入数据,即LCD显示波形点的高度。

wave_xs[9:8]

10'd1000

波形显示起始X坐标。

wave_xs[7:0]

10'd1001

波形显示起始X坐标。

wave_ys[9:8]

10'd1002

波形显示起始Y坐标。

wave_ys[7:0]

10'd1003

波形显示起始Y坐标。

wave_xe[9:8]

10'd1004

波形显示结束X坐标。

wave_xe[7:0]

10'd1005

波形显示结束X坐标。

wave_ye[9:8]

10'd1006

波形显示结束Y坐标。

wave_ye[7:0]

10'd1007

波形显示结束Y坐标。

wave_add_en

10'd1008

LCD读双口RAM起始地址递增使能信号,高电平有效。当完成一行完整的波形点显示后,希望实现类似示波器的波形右移效果,则使能该寄存器位。

wave_fcor[15:8]

10'd1010

波形显示前景色。

wave_fcor[7:0]

10'd1011

波形显示前景色。

wave_bcor[15:8]

10'd1012

波形显示背景色。

wave_bcor[7:0]

10'd1013

波形显示背景色。

dram_clr

10'd1014

双口RAM清除信号,高电平有效。

wave_disp

10'd1016

波形显示使能信号,高电平有效。

使用这些寄存器,如图17.14所示,我们可以在LCD上配置出一个起始点为(wave_xs,wave,ys),终点为(wave_xe,wave_ye),背景色为wave_bcor(黑色),波形色为wave_fcor(白色)的矩形波形窗口。

当我们设置wave_add_en0wave_disp1,并且连续送入(wave_xe - wave_xs)个波形点数据后,则出现图示的波形效果。若我们再送数据,则波形点会从wave_xs坐标开始覆盖原来的点。只有当我们设置wave_add_en1,那么原波形将右移一个像素点,并且新的波形从wave_xe的位置出现,这就实现了类似示波器的移动效果。

3.jpg

17.14波形显示界面示意图


Baidu
map