你好,欢迎访问达普芯片交易网!|  电话:010-82614113

达普芯片交易网 > 新闻资讯 > 设计应用

如何设计基于Avalon总线的可配置LCD控制器IP核?

发布时间:2018-08-02

目前在Altera SOPC Builder 下集成了包括UART、SPI、Ethernet、SDRAM、Flash、DMA等控制器的IP 核。此外,用户也可以根据系统的需要自己设计或者购买第三方厂商的IP 核通过Avalon 总线像搭积木一样方便地将这些IP 捆绑的系统上。但是在显示接口上,Altera公司只提供了一个16*2 的字符型LCD 控制器的IP 核,只能用来显示数字和英文字母。如用户需要图形显示(如MP4 和PDA)则需要外接专用控制芯片或自己设计IP 核,使用起来很不方便。因此我们设计一个基于Nios II 系统的可配置LCD 控制器的IP 核,本IP 核可以方便的通过Avalon 挂接到Nios II 的系统上。考虑到目前LCD 显示屏的实际需要,我们设计的LCD 显示控制IP 核具有以下主要功能:

·以Avalon 总线流传输模式提供接口;

·为LCD 屏提供扫描时序信号和显示数据;

·提供可以选择的分辨率,最大可以支持1024*768;

·可以通过软件配置显存的基地址和大小;

1. Avalon 总线规范

1.1 总线概述

Avalon 总线是Altera 公司为SOPC 系统开发的一种专用的内部连线技术,是一种理想的用于系统处理器和外设之间的内联总线。它是构建在Nios II 软核的基础上,由Altera 公司提供SOPC Builder 系统设计工具自动生成。

Avalon 总线支持多个主外设,任何一个主外设都可以直接进行存储器访问(DMA),而无须Nios II 处理器的干预。一般的系统总线(如AMBA 总线)都是采用主端总裁机制,而Avalon 采用DMA 从端仲裁机制,能够实现真正意义上的多模块DMA 并行传输,而不相互影响。

Avalon 总线允许多个主端口连接到总线模块,实现总线的的并发多主端口传输的功能,而总线模块不需要额外的特殊信号;当有多个主外设试图同时访问同一外设时,由Avalon总线模块内部的从端口仲裁逻辑来处理冲突,对于主端口来说,它并不会感到有另一个主端口也在争用该外设,而是简单的发现它的等待请求信号一直有效,直到目标外设从端口准备好来处理自己的请求。因此,多个主外设只要不是同时访问同一个从外设,即可同时进行总线传输。仲裁的详细信息被封装在总线内部,主外设和从外设的接口是一致的,与外设的数量无关。

1.2 Avalon 总线流传输模式

Avalon 规定了各种传输模式,这里只介绍本IP 核所使用的流传输模式。关于其他的总线模式读者可以Avalon 的总线规范。

流传输模式是在流模式主外设和流模式从外设之间建立一个开放的信道以供连续的数据传输。该信道使得只要存在有效数据,数据便能在主从端口对之间流动,主外设不必为了确定从端口是否可用而不断地访问从外设的寄存器。流传输模式使得主从端口之间的数据吞吐量达到最大,同时避免了从外设数据溢出。流传输模式最适合DMA 传输。一个只包含简单的流控制信号和一个计数器的DMA 控制器就可以用来在一个从外设和一个存储器之间连续地传输数据。

由于数据流是从Avalon 总线流向LCD 控制器,所以是流模式的从端口写传输。图1 显示了流模式从端口写传输的模型。

除了基本从端口传输中使用的信号外,流模式外设的接口中又引入了readyfordata、dataavailable 和 endofpacket 三个信号。流模式从端口就是指使用了一个或多个上述信号的从端口。readyfordata 有效表示外设准备好接受 Avalon 总线模块的写传输;dataavailable 有效表示能够为来自 Avalon 总线模块的读传输提供数据。Avalon 总线模块只在 readyfordata或 dataavailable 有效时才会发起传输行为。endofpacket 信号的含义取决于用户设计。

2. Avalone 流模式LCD 控制器IP 核设计

LCD 控制器按功能可划分为三个模块:接口模块,数据处理模块和时序产生模块。接口模块主要用来对系统进行配置,获取系统状态信息以及从内存读出将要显示的数据信息;数据处理模块根据系统的配置信息,对读入控制器的内存数据进行相应的处理,以符合用户设置的显示要求;时序产生模块产生显示时序信号,使得系统在不同的配置下都能产生与之相应的精确时序,以保证图象的正确显示。

在具体实现时,这三个部分又可以划分为不同的功能模块来完成系统的总体功能。整个模块包括配置寄存器接口模块、DMA 接口模块组成和异步FIFO 模块,时序产生部分由时序产生模块构成。

2.1 DMA 接口模块

一般情况下,LCD 显示需要进行大批量的数据传送。在标准 VGA(640×480 60Hz)模式下,每个像素点的扫描周期只有40ns。如此高速的数据传输,如果直接通过CPU 来操作,将会消耗大量的CPU 时间。为了提高CPU 的工作效率,我们在Nios II 下利用DMA(Direct Memory Access,直接存储器访问)来完成。利用DMA 控制器在LCD 控制器和显示存储器SDRAM 之间建立一条专用的DMA 传输通道,通过DMA 控制器自动的读去图象数据,不需要CPU 干预。

在DMA 传输时,首先需要由CPU 对DMA 进行初始化,设置显示存储器的基地址和长度以及LCD 控制器输入寄存器的地址,然后打开DMA 传输通道,使DMA 在没有CPU 干预的情况下直接从显示存储器读取显示数据传送到LCD控制的FIFO中。Nios II 可以在DMA暂停传输的期间操作SDRAM 中的显存,完成LCD 显示图像的更新。

DMA 接口采用Avalon 主设备端口来实现。

2.2 配置积存器接口模块

系统可以通过配置寄存器接口模块对LCD 显示控制器进行各种功能配置;LCD 控制器也可以通过接口模块向系统反馈所需的状态信息,从而实现对系统状态的检测和控制。通过针对不同种类的LCD 屏幕和不同的显示模式提供相应寄存器,可以保证对于各种LCD 显示屏的兼容。

2.3 异步FIFO 模块

由于总线接口模块和LCD 控制器工作在不同的时钟域,如果直接传送数据将会使电路进入亚稳态,无法正常工作。所以使用异步FIFO 做为接口在两个时钟之间传递数据。典型的异步FIFO 由异步双端口RAM 和控制逻辑构成。

热点排行

在线人工客服

点击这里给我发消息

点击这里给我发消息

点击这里给我发消息

010-82614113

客服在线时间周一至周五
9:00-17:30