特权同学FPGA专区
直播中

rousong1989

11年用户 1339经验值
擅长:可编程逻辑 嵌入式技术 EDA/IC设计
私信 关注
[FPGA作品]

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

`例说FPGA连载86:工业现场实时监控界面设计之波形产生模块代码解析
特权同学,版权所有
配套例程和更多资料下载链接:
http://pan.baidu.com/s/1c0nf6Qc
该模块实现NIOS II的Avalon-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_en为0,wave_disp为1,并且连续送入(wave_xe - wave_xs)个波形点数据后,则出现图示的波形效果。若我们再送数据,则波形点会从wave_xs坐标开始覆盖原来的点。只有当我们设置wave_add_en为1,那么原波形将右移一个像素点,并且新的波形从wave_xe的位置出现,这就实现了类似示波器的移动效果。
3.jpg
图17.14 波形显示界面示意图

` 1.jpg

更多回帖

发帖
×
20
完善资料,
赚取积分