《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于NiosⅡ軟核處理器的七段數碼管動態顯示設計
基于NiosⅡ軟核處理器的七段數碼管動態顯示設計
Altera公司
摘要: SOPC(System On Programmable Chip)技術是美國Altera公司于2000年最早提出的,并同時推出了相應的開發軟件Quartus II。SOPC是基于FPGA解決方案的SOC(System On Chip),構成SOPC的方案也有多種。第一種是基于FPGA嵌入IP硬核的SOPC系統,即在FPGA中事先植入嵌入式系統處理器,目前最常用的嵌入式處理器大多采用了含有ARM的32位知識產權處理器核的器件。第二種是基于FPGA嵌入IP軟核的SOPC系統,目前最有代表性的軟核處理器分別是Altera公司的Nios II核,以及Xilinx公司的MicroBlaze核。第三種是基于HardCopy技術的SOPC系統,HardCopy就是利用原有的FPGA開發工具,將成功實現于FPGA器件上的SOPC系統通過特定的技術直接向ASIC轉化。
Abstract:
Key words :

    SOPC" title="SOPC">SOPC(System On Programmable Chip)技術是美國Altera" title="Altera">Altera公司于2000年最早提出的,并同時推出了相應的開發軟件Quartus II。SOPC是基于FPGA解決方案的SOC(System On Chip),構成SOPC的方案也有多種。第一種是基于FPGA嵌入IP硬核的SOPC系統,即在FPGA中事先植入嵌入式系統處理器,目前最常用的嵌入式處理器大多采用了含有ARM的32位知識產權處理器核的器件。第二種是基于FPGA嵌入IP軟核的SOPC系統,目前最有代表性的軟核處理器分別是Altera公司的Nios II核,以及Xilinx公司的MicroBlaze核。第三種是基于HardCopy技術的SOPC系統,HardCopy就是利用原有的FPGA開發工具,將成功實現于FPGA器件上的SOPC系統通過特定的技術直接向ASIC轉化。

1 基于Altera公司NiosⅡ" title="NiosⅡ">NiosⅡ軟核處理器的SOPC系統

    Altera公司Nios II軟核是目前使用最為廣泛的一種軟核處理器。值得一提的是,利用Matlab和Altera公司的DSP Builder,用戶可以為Nios II軟核處理器設計各類DSP硬件加速器,并以指令的方式加入Nios II的指令集,從而可以構建自己的DSP處理器系統。

1.1 基于NiosⅡ軟核處理器的SOPC系統結構

    如圖1所示的一個基本的基于NiosⅡ軟核的SOPC系統,除NiosⅡ核、定時器和片上存儲器以外,還需要在FPGA器件中添加一些接口元件。這些元件一方面通過片上的Avolon總線與NiosⅡ軟核相連,另外一方面又提供了外設與NiosⅡ軟核通信的接口界面。

 

 


    Altera公司QuartusⅡ軟件中的SOPC Builder工具提供了許多常用的外設接口元件,如UART接口元件、PIO接口元件等,通過這些接口元件可以連接諸如RS232、LED、數碼管" title="數碼管">數碼管和按鍵等輸入輸出設備。在相對復雜的系統設計當中,還可以通過Avalon三態總線橋外接大容最的SRAM和FLASH,以提供更大的程序和數據存儲空間。從圖1中,還可以注意到,通過使用系統提供的用戶自定制外設接口元件的功能,用戶可以在系統中添加一個符合Avalon總線規范的外設接口元件,以連接用戶特定功能的外部設備。

1.2 自定制Avalon用戶外設接口元件簡介

    對于自定制的Avalon外設接口元件按照Avalon總線操作的不同可以分為兩類:Avalon Slave外設接口元件型的自定制的Avalon Slave外設接口元件框圖。從圖2中可以看到寄存器的定義是自定制外設接口元件很重要的一部分,必須根據設計的需要確定寄存器的個數和種類。圖2中的Avalon Slave接口提供了自定制外設接口元件與NiosⅡ處理器之間數據交換的界面,其接口信號類型也必須根據設計的需要合理地進行選擇。常用的Avalon Slave接口信號類型有:clk,chipselect,address,write,writedata,byteenable,reset等。圖2中的任務邏輯具體說明了自定制外設接口的功能,并給出了與外設連接的接口信號。

 


    自定制Avalon Slave外設接口元件的方法:可以利用SOPC Builder提供的元件編輯器在圖形用戶界面下將用硬件描述語言(Verilog或VHDL)描述的用戶邏輯封裝成一個SOPC Builder元件。相應的硬件描述語言文件給出了自定制外設接口元件的內部寄存器結構,使用到的Avalon Slave接口信號和自定制外設接口的邏輯功能。一旦定制成功后,用戶自定制的外設接口就可以象SOPCBuilder中其他元件一樣被調用。

2 基于NiosⅡ軟核處理器的七段數碼管動態顯示設計

    數字系統設計中,用數碼管顯示數據結果是常用的一種方法。利用Altera的SOPC Builder工具進行Nios Ⅱ系統設計時,并沒有提供專門的數碼管顯示接口元件,但可以使用PIO元件驅動數碼管顯示,不足之處是占用器件引腳數目過多。本文當中以自定制Avalon Slave外設接口元件的方式,給出了一種基于NiosⅡ軟核的七段數碼管動態顯示設計方案。該設計可以用來驅動1~8個共陰極(或共陽極)數碼管的顯示,可以根據需要選擇小數點顯示的位置,每個數碼管可以顯示0~F之間的十六進制字符。

    圖3為自定制的數碼管動態顯示接口元件邏輯結構圖,其中定義了2個寄存器display_data_reg和controlreg。display_data_reg是個一個32位二進制的數據寄存器,其數據每4位可以譯碼得到1個數碼管的七段顯示所需的字符碼,因此,display_data_reg同時最多可以給出8個數碼管所需要的顯示數據。control_reg是一個8位二進制的控制寄存器,但只定義了0~2位和第4位的含義。0~2位的數據給出了小數點顯示的位置,數值范圍在“000”~“111”之間,對應著8個數碼管最低位到最高位的小數點的位置。第4位是數碼管顯示的啟動停止位,當該數據位為1時,可使自定制接口元件所驅動的數碼管正常顯示結果;當該數據位為0時,停止顯示,所有被驅動的數碼管熄滅。

    參數n定義了循環加法計數器的模數,同時也決定了驅動數碼管顯示的個數,其取值范圍在1~8之間。clkdisplay是循環加法計數器的時鐘輸入,他決定了計數器的計數頻率,同時也決定了數碼管顯示的動態掃描頻率。參數pos用于決定驅動數碼管的類型,其值可設定為0或1。當其值為0時,seg_out字符碼輸出高電平有效,bit_control數碼管位選控制輸出低電平有效,此時輸出結果用于驅動共陰極數碼管顯示;當pos值為1時,seg_out字符碼輸出低電平有效,bit_control數碼管位選控制輸出高電平有效,此時輸出結果用于驅動共陽極數碼管顯示。

    seg_out為自定制元件的字符碼輸出,用于驅動數碼管顯示(包括小數點位)。其中,最高一位seg_out[7]用于驅動對應數碼管的小數點顯示,低7位seg_out[6..0]用于驅動數碼管的七段寧符顯示。圖3中數碼管七段譯碼器根據循環加法計數器的當前狀態值,從display_data_reg寄存器中選擇4位二進制數據進行譯碼。例如,當前驅動的數碼管的個數為5個(即n=5),循環加法計數器的當前狀態值用count表示,則count在0~4范圍內變化;若計數器的當前狀態值count為2,則選擇寄存器display_data_reg[11..8]的4位二進制數據進行譯碼,若計數器的當前狀態值count為3,則選擇寄存器display_data_reg[15..12]的4位二進制數據進行譯碼,即總是選擇寄存器display_data_reg[(count+1)×4-1..count×4]的4位二進制數據進行譯碼。寄存器control_reg的低3位指明了小數點顯示的位置,如control_reg[2..0]的值為“000”,則第0位數碼管的小數點點亮,若control_reg[2..0]的值為“010”,則第2位數碼管的小數點點亮。因為,循環計數器的狀態值count反應了數碼管動態顯示過程中當前數碼管顯示的位皆,因此,數碼管小數點譯碼器只要比較control_reg[2..0]與count的值,若兩者相等,seg_out[7]輸山有效值(共陰極輸出為高電平,共陽極輸出為低電平)即可驅動對應數碼管的小數點點亮。

     bit_control為自定制元件的位選控制輸出,其數據寬度為n位二進制,與要驅動的數碼管的個數是一致的。上面已經提到,循環加法計數器的狀態值count反應了當前數碼管顯示的位置。因此,只要根據count的值,使得bit_control對應位輸出有效值即可。例如,n取值為5,pos取值為0(即驅動共陰極數碼管),若計數器的當前狀態值count為2,則bit_control的輸出結果為“11011”,若count為4,則bit_control的輸出結果為“01111”。

 


    自定制元件的設計采用的是VHDL語言,其實體描述如下面程序所示:

 


    從上面的程序可以看到:n和pos定義成了類屬變量,當完成接口元件的定制以后,類屬變量在自定制元件的設置窗口中將以用戶參數的形式出現,如圖4所示,用戶可以設置其值。


    實體描述當中除定義了自定制元件與外部設備的接口信號clk_display,seg7_out,bit_control信號以外,還定義了 Avalon Slave接口信號,NiosⅡ軟核通過這些信號訪問自定制元件中定義的寄存器。前面介紹的兩個寄存器display_data_reg和control_reg是在程序的結構體說明部分定義的,具體語句如下:

    signal display_data_reg:std_logic_vector(31downto 0);

    signal control_reg:std_logic_vector(7 downto 0);

    結構體中還完成了所定義的兩個寄存器的數據寫入操作。圖3中所示的模n循環加法計數器、七段譯碼器、小數點譯碼器和位譯碼器也在結構體中按上面所介紹的功能設計完成。

3 實驗結果

    為了驗證用于驅動七段數碼管動態顯示的自定制元件功能,實驗中使用SOPC Builder建立了一個最簡單的NiosⅡ系統。該NiosⅡ系統添加了3個元件,名稱為cpu_0的NiosⅡ軟核處理器;名稱為seg7的自定制元件,用于完成數碼管的顯示驅動;名稱為onchip_RAM的片上隨機存儲器,存放調試時的程序代碼以及用作程序運行空間。生成的NiosⅡ系統的圖形符號如圖5所示,clk是系統工作時鐘輸入;reset_n是系統復位輸入,低電平有效;clk_display_to_the_seg7是數碼管掃描時鐘輸入,他決定了數碼管動態顯示的掃描速度;bit_control_from_the_seg7是位選控制輸出,決定了動態過程中哪一個數碼進行顯示seg7_out_from_the_seg7是數碼管顯示數據輸出,決定了數碼管顯示的內容。

    新建頂層原理圖,調用該NiosⅡ系統,為其添加輸入輸出引腳,并定義引腳號,選擇目標器件型號為EP1C6Q240C8,編譯生成配置文件,并通過下載電纜下載到目標器件中。接下來利用NiosⅡIDE建立用戶程序。

 


    實驗建立NiosⅡ系統時,添加驅動七段數碼管顯示的自定制元件seg7時的參數n和pos(如圖4所示)設置成了兩種測試情況,分別用來驗證其驅動共陰極和共陽極數碼管顯示的情況。第一種測試情況將n設置成7,pos設置成0,用來驅動7個共陰極數碼管顯示。NiosⅡIDE建立的用戶測試程序如下:

 


    程序編譯通過后,可以在硬件中調試運行程序。為了便于觀察測試結果,在ModelSim中運行仿真結果,得到仿真波形如圖6所示。仿真分析時系統工作時鐘(clk)設置為了50 MHz,數碼管動態顯示掃描頻率(clk_display)設置為1 kHz。圖6(a)給出了寄存器內容的寫入過程,3個write高電平期間完成了 3次寄存器的寫入操作。第一次write高電平將0x00寫入address為1的寄存器(即控制寄存器,該定義是在自定制元件的硬件描述語言設計中完成的);第二次write高電平將0xAF05163寫入address為0的寄存器(即數據寄存器);第三次write高電平將0x13又寫入address為1的控制寄存器。當控制寄存器的內容為0x00時,數碼管是停止顯示的,因此,在共陰極顯示的情況下bit_control的輸出全為高電平,直到控制寄存器的內容寫入0x13后,bit_control才有輸出為低電平的情況(如圖6所示)。圖6(b)給出了寫入寄存器內容以后的工作情況,當數據寄存器寫入0xAF05163、控制寄存器寫入0x13后,bit_control將從1111110到0111111循環變化,同時將數碼管顯示所需要的字符碼從seg7_out輸出。如當bit_control為1111110時,seg7_out輸出字符碼為0x4F,對應顯示“3”;當bit_control為1111101時,seg7_out輸出字符碼為0x7D,對應顯示“6”。由于控制寄存器寫入的內容為0x13,即第三位數據管的小數點會亮起,因此當bit_control為1110111時,seg7_out輸出字符碼為0xED(即二進制的“11101101”),數碼管對應顯示“5”,而最高一位的“1”會讓該數碼管的小數點點亮。

    以上是第一種測試情況。第二種測試情況是將seg7的參數n設置成5,pos設置成1,用來驅動5個共陽極數碼管顯示。NiosⅡ IDE建立的用戶測試程序如下:

 


    程序編譯通過后,同樣在Modelsim中運行仿真結果,得到仿真波形如罔7所示。仿真分析時系統工作時鐘(clk)設置為了50 MHz,數碼管動態顯示掃描頻率(clkdisplay)設置為1 kHz。

 


    與第一種共陰極顯示情況相比,第二種共陽極顯示時的寄存器寫入過程是大體一樣的。不同之處在于共陽極顯示時的bit_control和seg7_out和輸出極性正好與共陰極顯示時的相反。

    通過以上的實驗,驗證了自定制七段數碼管動態顯示接口元件功能的正確性。

4 結 語

    在用Altera公司的SOPC Builder工具完成NiosⅡ軟核SOPC系統設計時,可以用SOPC Builder中提供的元件來構建整個系統。但對于有些外部設備,SOPC Builder并沒有提供對應的接口元件,此時,就可以使用SOPC Build-er工具的自定制用戶元件功能來創建特定功能的接口元件。在本文中,針對數碼管的顯示,定制了一個七段數碼管動態顯示接口元件,可以用來驅動1~8個共陰極(或共陽極)數碼管的顯示,可以根據需要選擇小數點顯示的位置,每個數碼管可以顯示0~F之間的十六進制字符,并通過實驗驗證了其功能的正確性。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久亚洲不卡| 欧美久久九九| 亚洲精品日韩综合观看成人91| 日韩午夜激情av| 1024日韩| 狠狠狠色丁香婷婷综合久久五月| 欧美性淫爽ww久久久久无| 欧美二区在线播放| 久久婷婷麻豆| 久久精品夜夜夜夜久久| 香蕉成人伊视频在线观看| 在线亚洲一区观看| 日韩视频亚洲视频| 亚洲精品日产精品乱码不卡| 亚洲国产欧美另类丝袜| 欧美在线黄色| 欧美在线视频一区| 久久福利毛片| 久久激情视频久久| 亚洲成色www8888| 亚洲第一福利视频| 亚洲国产精品久久91精品| 亚洲电影网站| 亚洲精品国产日韩| 亚洲黄色av| 亚洲日本成人| 亚洲看片一区| 一区二区电影免费观看| 亚洲婷婷在线| 亚洲欧美另类在线观看| 久久精品国产久精国产思思| 久久精品色图| 亚洲国产日韩欧美一区二区三区| 亚洲国产99| 亚洲品质自拍| 中日韩视频在线观看| 正在播放欧美视频| 午夜精品久久久久久99热| 久久电影一区| 久久躁日日躁aaaaxxxx| 欧美freesex交免费视频| 欧美激情一二区| 欧美日韩国产a| 国产精品magnet| 国产日韩成人精品| 激情综合色综合久久| 在线国产亚洲欧美| 亚洲老板91色精品久久| 一区二区三区精密机械公司| 亚洲一区影音先锋| 欧美一区日本一区韩国一区| 亚洲黄网站在线观看| 一区二区三区 在线观看视| 亚洲欧美电影院| 久久久免费av| 欧美激情国产精品| 国产精品高潮呻吟视频| 国产一区二区三区视频在线观看 | 免费观看亚洲视频大全| 欧美高清视频一区二区三区在线观看| 欧美区日韩区| 国产欧美日韩在线| 亚洲丶国产丶欧美一区二区三区 | 亚洲电影免费观看高清完整版在线| 亚洲日产国产精品| 亚洲视频自拍偷拍| 久久国产精彩视频| 欧美成人精品h版在线观看| 欧美视频你懂的| 国语自产精品视频在线看| 日韩视频在线观看免费| 午夜精品久久久久久久99樱桃 | 亚洲免费视频在线观看| 久久久噜噜噜久久久| 欧美日韩aaaaa| 国产日韩欧美高清免费| 亚洲国产精品女人久久久| 亚洲免费在线| 日韩亚洲欧美成人| 欧美一区2区三区4区公司二百| 免费日韩av片| 国产精品美女主播| 一区二区在线视频播放| 亚洲一级在线观看| 日韩视频免费观看高清在线视频| 欧美一区视频在线| 欧美日韩国产a| 狠狠色丁香婷婷综合| 亚洲天堂免费观看| 亚洲三级电影在线观看| 午夜精品久久久久久久99黑人| 免费久久精品视频| 国产欧美视频在线观看| 亚洲精品中文字幕在线| 久久精品国产亚洲一区二区三区 | 欧美日韩另类视频| 一区二区三区在线观看视频| 亚洲综合色在线| 亚洲最新视频在线播放| 美女视频网站黄色亚洲| 国产乱理伦片在线观看夜一区| 亚洲精品精选| 亚洲国产欧美在线人成| 久久精品国产999大香线蕉| 欧美日韩在线看| 亚洲国产婷婷香蕉久久久久久| 性感少妇一区| 午夜精品久久久久| 欧美日韩视频在线| 亚洲国产视频直播| 亚洲国产成人久久| 久久精品99国产精品| 国产精品美女在线| 在线一区二区日韩| 在线视频一区二区| 欧美高清视频在线播放| 伊人天天综合| 亚洲电影成人| 久久男女视频| 狠狠色综合网站久久久久久久| 亚洲自拍啪啪| 午夜精品亚洲| 国产精品美女视频网站| 中文亚洲视频在线| 亚洲四色影视在线观看| 欧美日韩另类综合| 亚洲每日更新| 一本一本久久a久久精品综合妖精| 欧美精品免费观看二区| 亚洲国产精品尤物yw在线观看| 亚洲国产电影| 老司机一区二区三区| 黄色av成人| 亚洲国产日韩在线| 另类专区欧美制服同性| 1024成人网色www| 亚洲精品黄色| 欧美了一区在线观看| 亚洲欧洲午夜| 一本久久青青| 国产精品扒开腿爽爽爽视频| 一区二区欧美在线| 一区二区欧美激情| 国产精品v欧美精品v日韩| 亚洲视频在线一区| 先锋影音国产一区| 国产视频久久久久久久| 久久黄色网页| 麻豆精品传媒视频| 亚洲黄色大片| 一区二区欧美激情| 国产精品红桃| 欧美一区二区国产| 久久久久国色av免费观看性色| 国产一区二区三区在线观看视频 | 欧美成人综合一区| 亚洲人精品午夜| 亚洲一区视频在线| 国产一区二区三区在线观看网站| 亚洲国产精品一区制服丝袜 | 在线免费日韩片| 在线一区二区日韩| 国产女同一区二区| 亚洲高清三级视频| 欧美日韩亚洲高清一区二区| 亚洲欧美成人一区二区在线电影| 久久久久久久国产| 亚洲欧洲日本专区| 欧美在线999| 亚洲第一精品久久忘忧草社区| aa级大片欧美三级| 国产日韩精品综合网站| 亚洲精品日韩在线| 国产精品五月天| 亚洲激情成人| 国产精品久久久久久av福利软件 | 亚洲一区免费网站| 国内一区二区在线视频观看| 99视频精品| 国产视频一区二区在线观看| 亚洲精品影院在线观看| 欧美肉体xxxx裸体137大胆| 亚洲欧美制服另类日韩| 欧美成人在线影院| 1024成人| 亚洲综合清纯丝袜自拍| 国产主播一区| 亚洲午夜精品17c| 国产欧美一区在线| 亚洲片国产一区一级在线观看| 国产精品久久777777毛茸茸| 欧美一区二区三区四区视频| 免费在线观看日韩欧美| 亚洲第一区色| 欧美怡红院视频| 在线视频观看日韩| 亚洲在线免费视频| 亚洲国产精品一区二区www在线| 亚洲影院色无极综合| 国产亚洲激情视频在线|