FPGA之NIOS系统LCD1602核及自定义LCD液晶IP核

FPGA之NIOS系统LCD1602核及自定义LCD液晶IP核

前言

在前期文章中提到了LCD1602一些基本知识,包括控制,显示,时序。那如何在NIOS系统创建LCD1602的IP核?

由于在Qsys中提供了Optrex 16207 LCD Controller Core(下文统称1602控制核),因此我们只需调用,然后集成到我们的NIOS系统中即可,而且属于字符型输出设备,支持printf(),即我们可以直接输出我们想要的内容。

那么LCD1602控制核是如何进行工作的呢?

当把LCD1602控制核加入系统编译成功时,文件夹下会出现LCD16207.V的文件,我们来分析官方提供的文件是怎样进行描述的?

在这里插入图片描述

由上图端口定义得出以下总体结构

在这里插入图片描述

由上图可以看出LCD1602外设连接到LCD1602控制核上有11个信号:(信号命名根据.v文件)

LCD_E------输出使能
LCD_RS------数据/命令选择(输出)
LCD_RW------读或写选择(输出)
LCD_data------8位数据总线(双向DB0~DB7)

第一步:

我们首先需要控制输出使能LCD_E信号,根据Avalon-mm总线规则,可以看出有读写使能信号,而对于LCD1602来说,只有当LCD_E为下降沿时,指令或数据才有效,不论是对总线是什么操作,因此可以将读写使能赋值给LCD_E输出使能。

在这里插入图片描述

第二步;

我们需要理解LCD_RS和LCD_RW对于外设来讲是两个寄存器,而这两个寄存器是需要地址来进行访问的,因此第二步需要将LCD_RS和LCD_RW赋一个地址。

在这里插入图片描述

第三步:

此时我们需要知道LCD1602外设数据如何去与CPU进行交互?因为数据总线是双向的,因此三态门必不可少,其中readdata其实是总线上的接口,LCD_data赋值即可,也可对外来数据LCD_data进行异步信号同步处理。

在这里插入图片描述

而且Altera为Nios II处理器提供了HAL系统库驱动程序,使你能够使用ANSIC标准库功能访问LCD控制器, Altera提供的驱动程序集成到了Nios II系统的HAL系统库中。

即LCD1602控制器附以下软件文件。 这些文件定义了与硬件的底层接口,并提供了HAL驱动程序。

•altera_avalon_lcd_16207_regs.h-该文件定义内核的寄存器映射,提供用于访问底层硬件的符号常量。

•altera_avalon_lcd_16207.h,altera_avalon_lcd_16207.c-这些文件实现了HAL系统库的LCD控制器设备驱动程序。

综上可知,其实LCD1602控制核是个很简单的IP核,那我们如何在最小系统中去设计其他液晶的IP核呢?

自定义LCD液晶IP核

由LCD1602控制核须知自定义IP的接口有哪些?

1.全局时钟(Clk)和复位(Rst_n)信号必不可少。

2.Avalon-mm slave总线接口(接口信号根据实际外设接口来选择)

1)地址总线(avs_address)
2)片选信号(avs_chipselect /avs_chipselect_n)
3)写请求(avs_write /avs_write_n)
4)写数据(avs_writedata(8/16/32位 位宽))
5)读请求(avs_read /avs_read_n)
6)读数据(avs_readdata(8/16/32位 位宽))

7)等待信号(avs_waitrequest / avs_waitrequest_n)
8)读数据有效信号(avs_data_valid)

3.导出信号

导出到NIOS 系统层,分配到IO,或者连接到Qsys系统以外的逻辑。

下图是接口8080时序控制的液晶IP核。

在这里插入图片描述

那这时我们发现液晶信号的busy忙信号及RST复位信号未在导出信号之列,因为这两个信号在最小NIOS系统中可以单独用PIO核来进行读取控制。

5.7寸液晶导出的信号控制逻辑与LCD1602控制核一致。

当我们将该5.7寸文件编译通过后,就开始对我们的IP核进行封装。

自定义IP核封装

步骤一:点击下图位置打开自定义IP封装向导。

在这里插入图片描述

步骤二:如下图所示填好基本信息,最好将该元件纳入分组中,以便后期管理。

在这里插入图片描述

步骤三:将我们写好的.v文件添加进来分析,这里注意,因为这个IP核只有一个文件,因此顶层文件就是LCD,如果自定义IP核涉及多个文件,那么一定要注意顶层文件是哪一个。

在这里插入图片描述

步骤四:这里就体现信号规范命名的好处,接口和信号类型就显示正确,如果不正确,我们手动改变接口类型,注意信号类型如片选有低有效和高有效,不能与设计文件相违背,再例如我们导出的信号类型是.export,因此选择new_conduit接口。

在这里插入图片描述

步骤五:先移除掉无信号接口,在对每个接口进行配置,注意总线上的读写时序与接口8080一致,保证无错误即可生成.hw.tcl文件

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sinat_41653350/article/details/106470995