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文件

在這裏插入圖片描述

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章