王俠,郭海濤
(內(nèi)蒙古大學(xué) 電子信息工程學(xué)院,內(nèi)蒙古 呼和浩特 010020)
基于SOPC的定時(shí)器控制數(shù)碼管顯示
王俠,郭海濤
(內(nèi)蒙古大學(xué) 電子信息工程學(xué)院,內(nèi)蒙古 呼和浩特 010020)
提出一種控制數(shù)碼管顯示的有效方法,這種方法基于一種特殊的嵌入式系統(tǒng)-SOPC可編程片上系統(tǒng),以SOPC的應(yīng)用為基礎(chǔ)平臺(tái),利用Quartus II軟件構(gòu)建硬件系統(tǒng),并利用NiosⅡDES軟件編程,使其運(yùn)行在DE1上,通過(guò)程序的控制使數(shù)碼管顯示,從而實(shí)現(xiàn)時(shí)鐘的功能。實(shí)驗(yàn)結(jié)果表明,基于SOPC的系統(tǒng)環(huán)境下,可以利用定時(shí)器控制數(shù)碼管顯示。此外,還可以根據(jù)不同的用戶需求實(shí)現(xiàn)不同的功能,方便了對(duì)數(shù)碼管的控制,使其控制過(guò)程更加簡(jiǎn)潔有效。
SOPC;定時(shí)器;數(shù)碼管;SOPC Builder
數(shù)碼管是一種半導(dǎo)體發(fā)光器件,對(duì)其不同的管腳輸入相應(yīng)的電流,會(huì)使其發(fā)亮,從而顯示出數(shù)字。由于價(jià)位低、使用簡(jiǎn)單等優(yōu)勢(shì),其在現(xiàn)代工業(yè)控制、醫(yī)療器械及家電領(lǐng)域應(yīng)用極為廣泛。而隨著顯示數(shù)字位數(shù)的不斷增加,傳統(tǒng)的基于單片機(jī)、外部鎖存器和外部譯碼器的設(shè)計(jì)顯得愈發(fā)的復(fù)雜和繁瑣,設(shè)計(jì)成本也相應(yīng)的增加,顯示抖動(dòng)的問(wèn)題愈發(fā)嚴(yán)重。而利用FPGA硬件的并行性操作可以完全消除抖動(dòng)問(wèn)題,同時(shí)提高設(shè)計(jì)的可靠性,簡(jiǎn)化設(shè)計(jì),降低成本,因此對(duì)其進(jìn)行進(jìn)一步的研究很有必要[1]。
基于FPGA的可編程片上系統(tǒng)SOPC(system on progra mmable chip)技術(shù)是當(dāng)前電子系統(tǒng)設(shè)計(jì)領(lǐng)域最前沿的技術(shù)。SOPC軟核處理器克服了硬核處理器的價(jià)格偏高、處理器結(jié)構(gòu)不可更改、無(wú)法集成多個(gè)處理器等缺陷,具有提升系統(tǒng)的性能、降低集成成本和延長(zhǎng)產(chǎn)品的生命周期等優(yōu)勢(shì)[2]。定時(shí)器是NiosⅡ處理器系統(tǒng)中的一個(gè)具有控制啟動(dòng)、停止和復(fù)位等作用的基本單元。
在一個(gè)實(shí)際系統(tǒng)中,通常需要多個(gè)LED數(shù)碼管。多個(gè)LED數(shù)碼管不可能同時(shí)點(diǎn)亮,動(dòng)態(tài)顯示指的是多個(gè)LED數(shù)碼管的輪流點(diǎn)亮。但其輪流點(diǎn)亮的速度非??欤萌说摹耙曈X(jué)暫留”效應(yīng),人眼分辨不出其動(dòng)態(tài)閃爍,所以在人眼看來(lái)數(shù)碼管上顯示的是穩(wěn)定的數(shù)字,在人看來(lái)各數(shù)碼管是同時(shí)發(fā)光的。用定時(shí)器控制數(shù)碼管顯示的原理就是通過(guò)在添加組件時(shí)配置的定時(shí)脈沖來(lái)產(chǎn)生中斷,這樣在Nios II DES集成開(kāi)發(fā)環(huán)境下就可以通過(guò)相應(yīng)的軟件代碼來(lái)捕捉定時(shí)中斷并記錄數(shù)據(jù),為顯示提供前提。七段數(shù)碼管作為FPGA開(kāi)發(fā)板上標(biāo)準(zhǔn)的附帶器件,其使用方法已有一套標(biāo)準(zhǔn),文中針對(duì)于DE1(Development and Education Board)提供的七段數(shù)碼管特性設(shè)計(jì)相應(yīng)的邏輯模塊,通過(guò)SOPC Builder壞境下的用戶邏輯接口工具完成封裝,最后實(shí)現(xiàn)在Nios II DES環(huán)境下的使用。
本文主要用到了 SOPC系統(tǒng)的 Nios軟核處理器、Interval Timer定時(shí)器和PIO并行輸入/輸出3個(gè)主要部件。
1.1 Nios 軟核處理器
單片機(jī)、ARM等出廠時(shí)處理器固定在芯片上,而Nios II處理器和它們不同,出廠時(shí)的FPGA是空白的,里面并沒(méi)有處理器,所以Nios II處理器被稱(chēng)為軟核處理器。Nios II處理器是需要用戶利用軟件進(jìn)行配置的。Nios II處理器是指令總線與數(shù)據(jù)總線相獨(dú)立的哈佛結(jié)構(gòu)、支持32路中斷輸入;與普通處理器不同的是可以自定義指令,這在一些高速數(shù)據(jù)運(yùn)算中有很大的優(yōu)勢(shì)。
1.2 IntervalTimer 定時(shí)器
Interval Timer核是SOPC Builder自帶的Nios II基本外設(shè),是avalon總線與外部接口或外部邏輯的連接模塊;Nios II系統(tǒng)可以通過(guò)avalon主外設(shè)簡(jiǎn)單的通過(guò)讀和寫(xiě)控制寄存器以及狀態(tài)寄存器與該核實(shí)現(xiàn)通信,從而控制定時(shí)器的各種操作。
1.3 PIO 并行輸入/輸出
并行輸入/輸出是Avalon總線的從端外設(shè),提供了通用I/O端口和Avalon總線之間的地址映象接口。這里說(shuō)的I/O端口既可以與片上用戶其他邏輯相連接,又可以與FPGA的外圍器件相連接。每個(gè)PIO核可提供最多32個(gè)I/O端口,PIO核可以根據(jù)需要配置成輸入模式,輸出模式及雙向模式,對(duì)于輸入模式還可以對(duì)處理器產(chǎn)生中斷請(qǐng)求。PIO核是SOPC Builder自帶的IP核,可以很方便集成到Nios II系統(tǒng)中,是常用的Nios II外設(shè)之一,其在系統(tǒng)中可以與蜂鳴器,led等外設(shè)相連接。
1.4 SOPC系統(tǒng)開(kāi)發(fā)環(huán)境
SOPC是Altera公司提出的一種靈活、高效的SOC解決方案,是一種新的軟硬件協(xié)同設(shè)計(jì)的系統(tǒng)設(shè)計(jì)技術(shù)。SOPC系統(tǒng)設(shè)計(jì)主要包括以32位Nios軟核處理器為核心的嵌入式系統(tǒng)的硬件配置,硬件設(shè)計(jì)、硬件仿真、軟件調(diào)試等部分[3]。所用的基本軟件有:QuarutsⅡ,SOPC Builder,NiosⅡDES。
2.1 系統(tǒng)硬件結(jié)構(gòu)
基于SOPC的定時(shí)器控制數(shù)碼管顯示所用到的組件有Nios II processor,JTAG UART,Interval Timer,System ID Peripheral,HEX_pio,Oh-chip Memory和4個(gè)LED(占用28個(gè)PIO)。
本設(shè)計(jì)使用的PIO是與外部的LED數(shù)碼管連接,由于其連接的方式是直接連接,沒(méi)有片選,所以我們需要設(shè)置4組PIO,用來(lái)控制4個(gè)數(shù)碼管的顯示,每個(gè)數(shù)碼管用7個(gè)段選控制,所以我們總共需要28個(gè)輸出PIO來(lái)控制數(shù)碼管的顯示。
2.2 硬件系統(tǒng)的構(gòu)建
在SOPC Builder中硬件系統(tǒng)的構(gòu)建可分為以下幾個(gè)步驟:首先,設(shè)置時(shí)鐘的頻率參數(shù)為25 MHz;其次,添加片內(nèi)存儲(chǔ)器,選擇片內(nèi)存儲(chǔ)器類(lèi)型為RAM;使用的資源為M4K;數(shù)據(jù)位寬為32,總存儲(chǔ)器大小為12 kbykes;然后添加Nios II處理器,硬件乘法器選擇None,復(fù)位向量和異常向量存儲(chǔ)器均選擇前面添加的片上存儲(chǔ)器。更改指令緩存為2 kbyke;配置定時(shí)器,更改預(yù)置為Full—featured;添加JTAG UART,均選用默認(rèn)裝置;配置4個(gè)7位并行輸出的PIO,數(shù)據(jù)位寬選擇7;最后,自動(dòng)分配基地址,自動(dòng)分配中斷優(yōu)先級(jí),生成系統(tǒng)。
2.3 硬件系統(tǒng)的編譯
硬件系統(tǒng)的編譯可分為以下幾個(gè)步驟:首先,在新建的Verilog文檔中添加復(fù)位程序并保存,并將該模塊例化到頂層文件。復(fù)位的內(nèi)容主要是復(fù)位外部輸出為低電平有效;復(fù)位低電平信號(hào);復(fù)位寄存器為低電平有效和異步復(fù)位。其次,對(duì)系統(tǒng)生成后產(chǎn)生的inst.v文件進(jìn)行相應(yīng)的接口例化更改,得到工程頂層模塊代碼;編譯文件并分配管腳;編譯整個(gè)工程,生成下載用的*.pof文件;將DE1開(kāi)發(fā)板與計(jì)算機(jī)連接好,給開(kāi)發(fā)板上電;最后,將生成的*.pof文件下載到開(kāi)發(fā)板中。
3.1 軟件設(shè)計(jì)
目前大多數(shù)的FPGA采用硬件描述語(yǔ)言進(jìn)行設(shè)計(jì)。本次設(shè)計(jì)采用Verilog HDL語(yǔ)言在系統(tǒng)級(jí)使用,在軟件級(jí)采用的是C語(yǔ)言。利用定時(shí)器控制數(shù)碼管顯示的軟件程序設(shè)計(jì)由定義寄存器映射的頭文件和在Nios II系統(tǒng)中的驅(qū)動(dòng)程序組成。
3.1.1 頭文件的設(shè)置
基于SOPC的定時(shí)器控制數(shù)碼管顯示所用頭文件如下:
#include“system.h”//系統(tǒng)硬件定義頭文件
#include“alt_types.h”//數(shù)據(jù)類(lèi)型宏定義文件
#include“altera_avalon_pio_regs.h”//PIO外設(shè)頭文件
#include“altera_avalon_timer_regs.h”//定時(shí)器外設(shè)頭文件
3.1.2 程序設(shè)計(jì)
對(duì)于定時(shí)器控制數(shù)碼管顯示的程序設(shè)計(jì),可分為3個(gè)部分分別是初始化系統(tǒng)、中斷函數(shù)和循環(huán)掃描數(shù)碼管顯示。
首先,初始化系統(tǒng)包括定時(shí)器初始化和PIO初始化:
其中,alt_u8 seg[10]是對(duì)阿拉伯?dāng)?shù)字0到9進(jìn)行定義,根據(jù)DE1開(kāi)發(fā)板上有4個(gè)數(shù)碼管顯示,可以根據(jù)其不同的設(shè)置顯示控制其每一段的亮滅。由于其是共陽(yáng)極[4],所以為其任意一段提供一個(gè)低電平就可以點(diǎn)亮數(shù)碼管,提供一個(gè)高電平就可以控制數(shù)碼管不亮。
DE1中的七段數(shù)碼管沒(méi)有片選,只有位選,這樣我們就可以通過(guò)程序來(lái)直接控制每一位的顯示,并且4個(gè)數(shù)碼管可以同時(shí)點(diǎn)亮,再根據(jù)圖1所示的其每一段的位置在數(shù)碼管上的顯示,可以得出阿拉伯?dāng)?shù)字的二進(jìn)制表示。
根據(jù)圖1可以得到:
0的二進(jìn)制表示為1000000,十六進(jìn)制表示為0x40;
1的二進(jìn)制表示為1111001,十六進(jìn)制表示為0x79;
2的二進(jìn)制表示為0100100,十六進(jìn)制表示為0x24;
3的二進(jìn)制表示為0110000,十六進(jìn)制表示為0x30;
4的二進(jìn)制表示為0011001,十六進(jìn)制表示為0x19;
5的二進(jìn)制表示為0010010,十六進(jìn)制表示為0x12;
6的二進(jìn)制表示為0000010,十六進(jìn)制表示為0x02;
7的二進(jìn)制表示為1111000,十六進(jìn)制表示為0x78;
8的二進(jìn)制表示為0000000,十六進(jìn)制表示為0x00;
9的二進(jìn)制表示為0010000,十六進(jìn)制表示為0x10。
圖1 七段數(shù)碼管上每一段的位置
本設(shè)計(jì)的中斷函數(shù)如下:
中斷函數(shù)的思路是:定時(shí)器中斷默認(rèn)的周期值是1 ms,如果我們?cè)O(shè)置中斷函數(shù)中的flag值為1 000,那么正好可以使每次調(diào)用中斷函數(shù)的值為1 s,也就是每次數(shù)碼管顯示的每?jī)蓚€(gè)數(shù)值間隔1 s。
最后,是循環(huán)掃描數(shù)碼管顯示[5],使其實(shí)現(xiàn)秒表功能的程序設(shè)計(jì):
3.2 軟件實(shí)現(xiàn)
軟件開(kāi)發(fā)過(guò)程是實(shí)現(xiàn)基于SOPC的利用定時(shí)器控制數(shù)碼管顯示的另一個(gè)重要組成部分,利用定時(shí)器的原理來(lái)實(shí)現(xiàn)數(shù)碼管的不同實(shí)現(xiàn)是本設(shè)計(jì)的難點(diǎn),首先需要掌握Nios II DES軟件的使用,并且能夠熟練的操作[6]。本文的軟件開(kāi)發(fā)過(guò)程由以下幾部分組成:
1)在Nios II DES中新建一個(gè) NIOS II Application and BSP from Template工程,
2)對(duì)新建的NIOS2軟件進(jìn)行設(shè)置。
3)配置工程的系統(tǒng)屬性。先設(shè)置軟件的編譯屬性;再在新生成的工程中添加C源文件,將編寫(xiě)好的使用定時(shí)器控制數(shù)碼管顯示的程序添加到新建文件中;最后,添加利用定時(shí)器實(shí)現(xiàn)數(shù)數(shù)功能的程序。
4)編譯新生成的工程。
5)將編譯之后的程序運(yùn)行在開(kāi)發(fā)板上,查看結(jié)果。
實(shí)驗(yàn)結(jié)果說(shuō)明根據(jù)SOPC系統(tǒng)的開(kāi)發(fā)原理,利用Quartus II軟件中的SOPCBuilder開(kāi)發(fā)工具構(gòu)建硬件系統(tǒng),在NiosII EDS軟件中通過(guò)軟件程序的控制可以實(shí)現(xiàn)數(shù)碼管的秒表功能。
文中分為兩大部分,一部分是設(shè)計(jì)基于SOPC的定時(shí)器控制數(shù)碼管顯示的硬件部分,另一部分是利用定時(shí)器控制數(shù)碼管顯示的軟件設(shè)計(jì)。文中利用SOPC系統(tǒng)原理實(shí)現(xiàn)了定時(shí)器控制數(shù)碼管的顯示,這樣大大提高了設(shè)計(jì)的便捷性并且提升了數(shù)字系統(tǒng)的性能。根據(jù)不同的用戶需求可以通過(guò)軟件編程來(lái)實(shí)現(xiàn)不同的功能,這樣方便了對(duì)數(shù)碼管的控制,是其控制過(guò)程更加簡(jiǎn)潔有效。
[1]吳厚航.愛(ài)上FPGA開(kāi)發(fā)[M].北京:北京航空航天大學(xué)出版社,2011.[2]楊軍.面向SOPC的FPGA設(shè)計(jì)與應(yīng)用[M].北京:科學(xué)出版社,2012.
[3]YI Wu.Design of embedded web module based on SOPC[C]//國(guó)際會(huì)議.中國(guó)重慶:2012.
[4]邱鋒波.基于FPGA的并行數(shù)碼管顯示控制設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2009,9(23):7170-7173.
[5]張行松.LED數(shù)碼管顯示電子鐘PLC程序設(shè)計(jì)原理[J].黃岡師范學(xué)院學(xué)報(bào),2011,6(31):54-56.
[6]王銳.基于軟核NiosⅡ的SOPC數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2008,16(8):1199-1201.
Digital tube display controlled by a timer based on SOPC
WANG Xia,GUO Hai-tao
(Electronic Information Engineering College,Inner Mongolia University,Hohhot 010020,China)
Put forward an effective method to control the digital tube display,this method is based on a special kind of embedded system-the SOPC system on programmable chip,on the basis of the application of SOPC,about building a digital system that is controlled by a timer in the Quartus II software,and programming in the Nios II EDS software to make it run in DE1,through the control the digital tube display program,realize the function of clock.Experimental results show that the digital can display by the controlling of timer in the system of SOPC.In addition,you can realize different functions according to different requirements of users,it can convenient for controlling the digital tube,and make it more concise and effective.
System On Programmable Chip(SOPC);timer;digital tube;SOPC Builder
TN141.6
A
1674-6236(2016)15-0162-03
2015-07-26 稿件編號(hào):201507169
內(nèi)蒙古大學(xué)高層次人才引進(jìn)科研資助項(xiàng)目(135123)
王 俠(1990—),女,內(nèi)蒙古烏蘭察布人,碩士研究生。研究方向:嵌入式技術(shù)、圖像處理。