1 引言
SOPC代表了當今電子設計的發展方向,它可以將處理器、存儲器、I/O接口、硬件協處理器和普通的用戶邏輯等系統設計需要的功能模塊都集成到一個FPGA芯片里,構建一個可編程的片上系統。它具有軟硬件可重構、剪裁和編程等功能,由于同時涉及底層的硬件系統設計和相應的軟件設計,在系統優化方面有了前所未有的自由度。
現在的電子萬年歷多數采用基于單片機的控制技術,可移植性較差,集成度較低,本文以杭州康芯電子有限公司生產的GW48-PK 系統的64×64 點陣型液晶顯示模塊LCD GDM12864A 為例,利用NIOSⅡ軟核在Altera公司的CycloneEP1C6Q240C8 芯片中,既能實現用戶定制的處理器,又能對液晶顯示模塊和數碼管顯示進行編程控制。本文在軟、硬件開發過程中,通過利用SOPC技術,縮短設計開發周期,節約開發成本,優化性能和資源。
本文以萬年歷設計為例,使讀者初步了解SOPC的開發過程。
2 系統硬件設計
在系統的硬件設計中,FPGA 內部各模塊設計是本系統硬件設計的核心技術。FPGA 內部各模塊是利用ALTERA 公司的Quartaus Ⅱ開發軟件中的SOPC builder 工具對CPU 進行定制,包括CPU 的數據和指令Cache 的大小、CPU 寄存器數量(NIOS Ⅱ 最多可以有512 個寄存器)等。用戶可以增加新的外設,新的指令,分配外設的地址等進行定義,完成SOPC 開發的集成過程。將這些設計在Quartaus Ⅱ中編譯并生成sof 格式文件后,下載到FPGA 芯片中就形成了SOPC 的嵌入式系統硬件平臺。
對萬年歷設計來說,需要將本設計所需要的外設添加到NIOS 軟核中。NIOS Ⅱ自帶的各種IP Core 如按鍵、七段數碼管、LED 等可以直接添加進來。對于LCD,由于SOPC builder 自帶的IP 庫中并不包含LCD 配置接口模塊,所以該模塊需要設計者根據要配置的芯片的寄存器特點和功能要求進行專門的設計。本系統的LCD 液晶屏顯示器驅動接口在設計時作為普通的外部設備PIO 進行操作,因此液晶屏顯示器的數據以及讀、寫和片選信號等都包括在PIO 總線上。液晶屏顯示器以7 個PIO 的形式添加進來,如圖1 所示利用SOPC builder 開發工具創建用戶定制的NIOSⅡ配置及其地址映射。
然后,用SOPC Builder 將定制轉化成為具體的元件,即用戶定制的NIOS Ⅱ處理器模塊,如圖2 所示。最后加入增強時鐘穩定性的鎖相環和復位輸入端最終形成頂層結構,除此之外,SOPC builder 還根據定制的結果,自動生成針對特定硬件環境的C 語言和匯編語言的頭文件以及函數庫,這在軟件設計中會極大的減少軟件開發人員的工作量。
3 系統軟件設計本系統的軟件是在ALTERA 公司提供的軟件集成開發工具NIOS Ⅱ IDE 中,以C 語言形式,在硬件抽象層(HAL )函數支持下設計的。它可完成整個軟件工程的編輯、編譯、調試和下載等過程,極大地提高了軟件的開發效率。系統的軟件設計主要包括兩個部分:液晶顯示模塊和萬年歷模塊。
(1)液晶顯示模塊
在GDM12864A 液晶屏顯示器的應用時,顯示屏被分為左右兩個區,上下一共八頁,在進行訪問時,由于縱坐標不好控制,而橫坐標自動加一,因此選擇由page0—page7 逐行寫入數據。即對于32×32 的“萬年歷”三個字將分4 次寫入。而“作者:劉雅斌”這幾個16×16 的字符將分兩次寫入。每個漢字在液晶屏上是以點陣字模形式顯示的,每個點用一個二進制位表示。關鍵算法是利用NIOSⅡ函數控制液晶屏顯示器寫命令和寫數據。寫命令和寫數據程序如下所示:void LCD_Write_Command(alt_u8 m_Command) // 寫命令{ if (!BUSY)
{ IOWR_ALTERA_AVALON_PIO_DATA(LCD_RS_BASE, 0);// 選擇命令 IOWR_ALTERA_AVALON_PIO_DATA(LCD_RW_BASE, 0); // 寫信號有效 IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DB_BASE,0xff); 數據總線:輸出 IOWR_ALTERA_AVALON_PIO_DATA(LCD_DB_BASE, m_Command); 寫命令字 IOWR_ALTERA_AVALON_PIO_DATA(LCD_E_BASE, 1); // 使能信號置1 IOWR_ALTERA_AVALON_PIO_DATA(LCD_E_BASE, 0); // 使能信號置0
}} void LCD_Write_Data(alt_u8 m_Data) //寫數據{ if (!BUSY)
{ IOWR_ALTERA_AVALON_PIO_DATA(LCD_RS_BASE, 1);// 選擇數據 IOWR_ALTERA_AVALON_PIO_DATA(LCD_RW_BASE, 0); // 寫信號有效 IOWR_ALTERA_AVALON_PIO_DIRECTION(LCD_DB_BASE,0xff); // 數據總線:輸出 IOWR_ALTERA_AVALON_PIO_DATA(LCD_DB_BASE, m_Data);// 寫入數據 IOWR_ALTERA_AVALON_PIO_DATA(LCD_E_BASE, 1);// 使能信號置1 IOWR_ALTERA_AVALON_PIO_DATA(LCD_E_BASE, 0);// 使能信號置0
}}
(2)萬年歷模塊
這一部分主要實現了萬年歷的基本功能,即能夠顯示日期與時間,并具有調整日期和時間的功能。Nios 提供了關于LED、七段數碼管和按鍵進行讀寫的函數,通過這些函數可以實現日期和時間的顯示。例如:
在LED 上輸出顯示data 數據的語句格式為:
IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,data);
在七段數碼管上輸出顯示data 數據的語句格式為:
IOWR_ALTERA_AVALON_PIO_DATA(SEVEN_SEG_PIO_BASE,data);
用變量key 讀取按鍵BUTTON 上的數據的語句格式為:
Key=IORD_ALTERA_AVALON_PIO_DATA(BUTTON_PIO_BASE);
以上程序經過在杭州康芯公司的開發板上進行了軟、硬件調試,實現了對液晶模塊的萬年歷和作者信息等漢字字符顯示,并在LED 上實現了萬年歷的功能,并能夠進行日期和時間的調整。
3 結論
本文作者創新點是采用NIOS Ⅱ集成開發環境提供的快捷開發手段,在Cyclone 1C6Q240C8 芯片上創建了一個用戶定制CPU 和外設的片上系統,同時完成對液晶顯示器和LED 的編程控制。整個系統充分體現了SOPC 設計方法的靈活性,設計時只定制系統需要的外設器件接口,避免過多的外圍電路和器件造成體積、功耗的增多和可靠性的下降。由于采用軟核結構,方便系統的升級和擴展,而不必硬件改版,節約了成本,加快開發進度,縮短了產品的開發周期。
綜上所述,萬年歷的設計思想新穎獨特,有很多創新之處,具有良好的推廣前景和廣闊的應用領域.。
-
FPGA
+關注
關注
1634文章
21818瀏覽量
607305 -
寄存器
+關注
關注
31文章
5387瀏覽量
121611 -
液晶模塊
+關注
關注
0文章
82瀏覽量
21765
發布評論請先 登錄
相關推薦
利用CKS32F107xx系列RTC的鬧鐘實驗
如何利用RTC外設實現萬年歷功能
金融界稱:萬年芯取得提升薄芯片良率的貼片方式專利

【RA-Eco-RA2L1-48PIN-V1.0開發板試用】——使用RTC實現萬年歷年月日時分秒
【RA-Eco-RA4E2-64PIN-V1.0開發板試用】使用任意定時器實現軟件萬年歷
2025年全球半導體八大趨勢,萬年芯蓄勢待發

萬年芯:芯片管制再升級,國產替代已是必然

央企引領芯片創新,萬年芯助力重點領域突破

用免費PCB,做了個桌面擺件!網友:怎么回事,好想復刻!

液晶模塊是什么?液晶模塊和液晶顯示屏有什么區別?
如何通過藍牙獲取手機時間同步時鐘RTC萬年歷走ble或者edr經典藍牙

評論