FPGA學(xué)習(xí)六之NIOS系統(tǒng)LCD1602核及自定義LCD液晶IP核

姓名:黃楠琳? ? ? ?學(xué)號:19020100011? ? ? ? 學(xué)院:電子工程學(xué)院

轉(zhuǎn)自:https://blog.csdn.net/sinat_41653350/article/details/106355562

【嵌牛導(dǎo)讀】本文介紹了如何在NIOS系統(tǒng)創(chuàng)建LCD1602的IP核

【嵌牛鼻子】NIOS II、LCD1602

【嵌牛提問】如何在NIOS系統(tǒng)創(chuàng)建LCD1602的IP核?LCD1602控制核是如何進行工作的?

【嵌牛正文】

由于在Qsys中提供了Optrex 16207 LCD Controller Core(下文統(tǒng)稱1602控制核),因此我們只需調(diào)用,然后集成到我們的NIOS系統(tǒng)中即可,而且屬于字符型輸出設(shè)備,支持printf(),即我們可以直接輸出我們想要的內(nèi)容。

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

當(dāng)把LCD1602控制核加入系統(tǒng)編譯成功時,文件夾下會出現(xiàn)LCD16207.V的文件,我們來分析官方提供的文件是怎樣進行描述的?


由上圖端口定義得出以下總體結(jié)構(gòu)


由上圖可以看出LCD1602外設(shè)連接到LCD1602控制核上有11個信號:(信號命名根據(jù).v文件)

LCD_E------輸出使能

LCD_RS------數(shù)據(jù)/命令選擇(輸出)

LCD_RW------讀或?qū)戇x擇(輸出)

LCD_data------8位數(shù)據(jù)總線(雙向DB0~DB7)

第一步:

我們首先需要控制輸出使能LCD_E信號,根據(jù)Avalon-mm總線規(guī)則,可以看出有讀寫使能信號,而對于LCD1602來說,只有當(dāng)LCD_E為下降沿時,指令或數(shù)據(jù)才有效,不論是對總線是什么操作,因此可以將讀寫使能賦值給LCD_E輸出使能。


第二步;

我們需要理解LCD_RS和LCD_RW對于外設(shè)來講是兩個寄存器,而這兩個寄存器是需要地址來進行訪問的,因此第二步需要將LCD_RS和LCD_RW賦一個地址。


第三步:

此時我們需要知道LCD1602外設(shè)數(shù)據(jù)如何去與CPU進行交互?因為數(shù)據(jù)總線是雙向的,因此三態(tài)門必不可少,其中readdata其實是總線上的接口,LCD_data賦值即可,也可對外來數(shù)據(jù)LCD_data進行異步信號同步處理。


而且Altera為Nios II處理器提供了HAL系統(tǒng)庫驅(qū)動程序,使你能夠使用ANSIC標(biāo)準(zhǔn)庫功能訪問LCD控制器, Altera提供的驅(qū)動程序集成到了Nios II系統(tǒng)的HAL系統(tǒng)庫中。

即LCD1602控制器附以下軟件文件。 這些文件定義了與硬件的底層接口,并提供了HAL驅(qū)動程序。

?altera_avalon_lcd_16207_regs.h-該文件定義內(nèi)核的寄存器映射,提供用于訪問底層硬件的符號常量。

?altera_avalon_lcd_16207.h,altera_avalon_lcd_16207.c-這些文件實現(xiàn)了HAL系統(tǒng)庫的LCD控制器設(shè)備驅(qū)動程序。

綜上可知,其實LCD1602控制核是個很簡單的IP核,那我們?nèi)绾卧谧钚∠到y(tǒng)中去設(shè)計其他液晶的IP核呢?

自定義LCD液晶IP核

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

1.全局時鐘(Clk)和復(fù)位(Rst_n)信號必不可少。

2.Avalon-mm slave總線接口(接口信號根據(jù)實際外設(shè)接口來選擇)

1)地址總線(avs_address)

2)片選信號(avs_chipselect /avs_chipselect_n)

3)寫請求(avs_write /avs_write_n)

4)寫數(shù)據(jù)(avs_writedata(8/16/32位 位寬))

5)讀請求(avs_read /avs_read_n)

6)讀數(shù)據(jù)(avs_readdata(8/16/32位 位寬))

7)等待信號(avs_waitrequest / avs_waitrequest_n)

8)讀數(shù)據(jù)有效信號(avs_data_valid)

3.導(dǎo)出信號

導(dǎo)出到NIOS 系統(tǒng)層,分配到IO,或者連接到Qsys系統(tǒng)以外的邏輯。

下圖是接口8080時序控制的液晶IP核。


那這時我們發(fā)現(xiàn)液晶信號的busy忙信號及RST復(fù)位信號未在導(dǎo)出信號之列,因為這兩個信號在最小NIOS系統(tǒng)中可以單獨用PIO核來進行讀取控制。

5.7寸液晶導(dǎo)出的信號控制邏輯與LCD1602控制核一致。

當(dāng)我們將該5.7寸文件編譯通過后,就開始對我們的IP核進行封裝。

自定義IP核封裝

步驟一:點擊下圖位置打開自定義IP封裝向?qū)А?/p>


步驟二:如下圖所示填好基本信息,最好將該元件納入分組中,以便后期管理。


步驟三:將我們寫好的.v文件添加進來分析,這里注意,因為這個IP核只有一個文件,因此頂層文件就是LCD,如果自定義IP核涉及多個文件,那么一定要注意頂層文件是哪一個。



步驟四:這里就體現(xiàn)信號規(guī)范命名的好處,接口和信號類型就顯示正確,如果不正確,我們手動改變接口類型,注意信號類型如片選有低有效和高有效,不能與設(shè)計文件相違背,再例如我們導(dǎo)出的信號類型是.export,因此選擇new_conduit接口。


步驟五:先移除掉無信號接口,在對每個接口進行配置,注意總線上的讀寫時序與接口8080一致,保證無錯誤即可生成.hw.tcl文件



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容