亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于FPGA的16×16點陣模塊控制器設計

        2018-10-29 08:03:20喬廣欣李亞峻堃斌于寶
        天津科技 2018年10期
        關(guān)鍵詞:行列譯碼器時鐘

        喬廣欣,李亞峻*,李 松,楊 堃斌,于寶

        (天津科技大學電子信息與自動化學院 天津300222)

        LED點陣顯示系統(tǒng)不僅能夠靜態(tài)顯示字符和圖像,而且能夠動態(tài)顯示文字、動畫、視頻等信息,具有亮度高、壽命長、價格低、視角大等優(yōu)點,得到廣泛應用。

        常用的 LED 點陣顯示系統(tǒng)由微控制器、LED點陣顯示屏及其行列驅(qū)動電路組成。所用微控制器的種類有基于AVR單片機的ATmega128[1]和基于51單片機的 AT89C51[2]、基于 ARM 的以 Cortex-M0+為內(nèi)核的 KW01-Zigbee[3]和以 Cortex-M3為內(nèi)核的STM32F103[4]、基于 FPGA 的 Xilinx Virtex4 系列XC4VSX25[5]等。單片機與 ARM 的開發(fā)語言有匯編語言或C/C++語言,F(xiàn)PGA的開發(fā)語言有VHDL語言或 Verilog語言。本文用 VHDL語言編程,采用DIGILENT公司的便攜式 Basys2開發(fā)板,其上嵌有Xilinx Spartan-3E系列FPGA器件XC3S100E[6]。

        16×16點陣有32個引腳,不適合直接與微控制器相連,占用太多的引腳資源。實際上常將譯碼器、串并轉(zhuǎn)換芯片組成行列驅(qū)動電路用于控制LED點陣顯示,常見的有用3-8譯碼器74HC138或4-16譯碼器 74HC154輪詢掃描點陣行,用移位寄存器74HC595鎖存點陣列數(shù)據(jù)[1,4]。本文選用74HC138與74HC595驅(qū)動的點陣模塊。

        1 16×16點陣模塊的硬件電路

        16×16點陣的每一行接LED燈的正極,每一列接 LED燈的負極。點陣的 16行 H1—H16由兩片74HC138組合控制,Hi=1時第 i行被選通;點陣的16列L1—L16由兩片74HC595級聯(lián)進行控制,Hi=1、Lj=0時,第i行第j列的LED燈被點亮。

        1.1 點陣行驅(qū)動74HC138

        74HC138是一個 3-8譯碼器,當使能信號E3E2E1=100時,A2A1A0從 000到 111依次取值,使輸出端Y0—Y7依次輸出低電平[7]。如圖1所示,用2個74HC138組合能夠?qū)崿F(xiàn)4-16譯碼器,在輸出端外接三極管(圖 1中只示意性地畫了一個)可以驅(qū)動16×16點陣的點陣行 H1—H16(高電平有效)。始終使 G=0,當 D=0時,74HC138-1使能,CBA從 000到 111依次取值,H1至H8行依次被選通;當 D=1時,74HC138-2使能,CBA從000到111依次取值,H9至H16行依次被選通。

        圖1 用74HC138控制點陣行Fig.1 Control of dot matrix row with 74HC138

        1.2 點陣列驅(qū)動74HC595

        74HC595是一個移位寄存器,可實現(xiàn)數(shù)據(jù)的串行輸入/8位并行輸出或者串行輸出[8]。如圖 2所示,將 74HC595-1的 SQH與 74HC595-2的 SI相連,也就是將兩片74HC595級聯(lián),可實現(xiàn)16位數(shù)據(jù)的并行輸出,用于控制16×16點陣的16列L1—L16。

        圖2 用74HC595控制點陣列Fig.2 Control of dot matrix column with 74HC595

        74HC595有三個重要的輸入引腳,SCK(數(shù)據(jù)輸入時鐘)、SI(數(shù)據(jù)輸入)、RCK(輸出鎖存時鐘),分別對應于點陣模塊上的引腳名稱為 CLK、DATA、LATCH。它們的工作時序如圖 3所示,當RCK為低電平時,從SI串行輸入的數(shù)據(jù)D0—D15在每個SCK的上升沿依次被載入移位寄存器。從第 8個 SCK的下降沿開始,數(shù)據(jù)將出現(xiàn)在74HC595-2的輸入端SI。連續(xù)輸入 16位數(shù)據(jù)后,在 RCK的上升沿 D0—D15被鎖存到輸出存儲器中,立即更新點陣列 L16—L1上的信息。

        圖3 74HC595的時序圖Fig.3 Timing diagram of 74HC595

        2 點陣顯示驅(qū)動模塊

        圖4點陣顯示驅(qū)動模塊 disp_dot16×16實現(xiàn)的是點陣行控制信號的產(chǎn)生、16位點陣列數(shù)據(jù)的存取與串行輸出。

        圖4 點陣顯示驅(qū)動模塊Fig.4 Dot matrix display driver module

        2.1 點陣列數(shù)據(jù)的存儲與調(diào)用

        點陣列數(shù)據(jù)從 74HC595串行輸入。由于74HC595只有一個輸出存儲器,只能存儲一行數(shù)據(jù)。所以需要通過編程輪詢掃描點陣的 H1—H16行,同時在 L1—L16列輸入待顯示的信息,利用人眼的視覺暫存現(xiàn)象實現(xiàn)16×16點陣圖形的顯示。

        點陣圖像的數(shù)據(jù)較多,適于用ROM或RAM存儲起來,然后用查找表的方式輸出。本設計直接調(diào)用Xilinx ISE軟件開發(fā)環(huán)境提供的ROM IP核(romip模塊) ,在其上存儲了一幅16×16點陣的圖像信息。在時鐘clk_row的上升沿,根據(jù)ctrl_addr模塊地址addr從romip模塊中讀取數(shù)據(jù)dout,地址addr自加1。

        2.2 點陣行列控制器的VHDL程序設計

        ctrl_addr模塊的地址 addr不僅控制點陣列數(shù)據(jù)的存取,還控制ctrl_dot模塊的點陣行選通信號dcba和點陣列數(shù)據(jù)data的更新。為了使74HC595正常工作,需要按照圖 3所示的工作時序編寫它的 VHDL控制程序,將16位并行數(shù)據(jù)data_line(15∶0)轉(zhuǎn)換為串行數(shù)據(jù)輸出給 data,同時產(chǎn)生 74HC595芯片所需的數(shù)據(jù)輸入時鐘clk_hc595和輸出鎖存時鐘latch,它們分別與 16×16點陣模塊的 DATA、CLK、LATCH端相連,如圖2所示。點陣行列控制器的VHDL程序段用如下if語句編程實現(xiàn)。

        g<='0'; --選通 74HC138

        if rising_edge(clk)then

        if latch_tmp='1' then -- ①

        clk_hc595<='0';

        if(addr_l=addr_tmp)then

        data_tmp <= data_line;

        addr_tmp:=addr_tmp+1;

        latch_tmp<='0';

        shift_f<='1';

        else

        dcba<=addr_l-1;

        end if;

        else

        if shift_f='1' then -- ②

        clk_hc595<='0';

        data<=data_tmp(0) ;

        data_tmp(14 downto 0)<=data_tmp

        (15 downto 1);

        shift_f<='0';

        else -- ③

        clk_hc595<='1';

        if cnt=X"F" then

        latch_tmp<='1';

        cnt:=X"0";shift_f<='0';

        else

        cnt:=cnt+1;shift_f<='1';

        end if;

        end if;

        end if;

        latch<=latch_tmp;

        end if;

        ① 裝載新數(shù)據(jù)/選通點陣行。當 latch_tmp為 1時,使 clk_hc595為 0。當 addr_l與預設的 addr_tmp不一致時,說明地址未更新,點陣顯示上一行的信息,繼續(xù)檢測。當檢測到addr_l與addr_tmp相同時,說明有新數(shù)據(jù)到來,將新數(shù)據(jù) data_line裝載到data_tmp;addr_tmp自加 1,準備下一個數(shù)據(jù)的地址;使latch_tmp為0,移位標志位shift_f置1。

        ② 16位數(shù)據(jù)串行輸出,先低位后高位。當latch_tmp為 0時,如果 shift_f為 1,則將 16位并行數(shù)據(jù)的最低位輸出給 data,其他數(shù)據(jù)右移一位,實現(xiàn)數(shù)據(jù)從低位到高位的串行輸出;使 clk_hc595為 0,shift_f為 0。

        ③ 產(chǎn)生時鐘clk_hc595和輸出鎖存信號latch的上升沿。當latch_tmp為0時,如果shift_f為0,則使clk_hc595由 0變?yōu)?1,每移一位數(shù)產(chǎn)生一個clk_hc595時鐘;當 cnt<15時,說明 16位數(shù)據(jù)未傳完,使cnt自加1,shift_f為1,在下一個clk時鐘的上升沿轉(zhuǎn)到②繼續(xù)串行輸出。當計數(shù)器 cnt=15時,表明16位數(shù)據(jù)全部串行輸出完畢,使latch_tmp由0變?yōu)?1,產(chǎn)生輸出鎖存信號 latch的上升沿,鎖存數(shù)據(jù)。使cnt清零,shift_f為0,在下一個clk時鐘上升沿轉(zhuǎn)到①,等待下一次數(shù)據(jù)更新。

        3 16×16點陣顯示的硬件實現(xiàn)效果

        對工程進行綜合、實現(xiàn)、產(chǎn)生可編程文件,下載到Basys2開發(fā)板上,實現(xiàn)了如圖5所示的顯示效果。

        圖5 16×16點陣顯示效果(津門)Fig.5 16×16 dot matrix display effect(Jinmen)

        在存儲器中存入更多幅圖像信息,然后對地址模塊 ctrl_addr進行更復雜的編程控制,即可實現(xiàn)圖像的動態(tài)顯示,使一幅幅圖像切換顯示,使點陣顯示信息向左或向右移,等等。

        4 結(jié) 論

        本文著重介紹了點陣行列控制器的 VHDL程序設計,用 if嵌套語句編程實現(xiàn)了數(shù)據(jù)的存儲調(diào)用與串行輸出、控制 74HC138驅(qū)動點陣行選通、控制74HC595驅(qū)動點陣列,從而在點陣屏上顯示出預設的圖像信息。

        猜你喜歡
        行列譯碼器時鐘
        用“行列排除法”解四宮數(shù)獨(2)
        用“行列排除法”解四宮數(shù)獨(1)
        別樣的“時鐘”
        古代的時鐘
        糾錯模式可配置的NAND Flash BCH譯碼器設計
        單層小波分解下圖像行列壓縮感知選擇算法
        跟蹤導練(一)5
        有趣的時鐘
        時鐘會開“花”
        HINOC2.0系統(tǒng)中高速LDPC譯碼器結(jié)構(gòu)設計
        天天碰免费上传视频| 日本中文字幕一区二区在线观看| 精品国产a毛片久久久av| 久久久久99精品成人片欧美| 日本公与熄乱理在线播放| 精品国内自产拍在线视频| 61精品人妻一区二区三区蜜桃| 日韩一区av二区三区| 亚洲高清在线视频网站| 亚洲写真成人午夜亚洲美女| 亚洲精品成人av在线| 国产精品一区二区久久| 国产伪娘人妖在线观看| 手机在线播放av网址| 无码视频在线观看| 亚洲综合一区二区三区四区五区| 日本精品国产1区2区3区 | 亚洲男同免费视频网站| 中文字幕色av一区二区三区| 欧美婷婷六月丁香综合色| 国产自产拍精品视频免费看| 国产精品一区av在线| 无码av一区二区大桥久未| 欧美一区波多野结衣第一页| 日本人妖一区二区三区| 丁香五月缴情在线| 国产96在线 | 欧美| 久久久久综合一本久道| 国产精品毛片极品久久| 精品少妇无码av无码专区| 一区二区三区日韩亚洲中文视频| 亚洲免费av第一区第二区| 制服丝袜一区二区三区 | 欧美成人看片一区二区三区尤物| 97精品伊人久久大香线蕉app| 亚洲福利第一页在线观看| 久久久亚洲熟妇熟女av| 日韩激情无码免费毛片 | 日本不卡的一区二区三区中文字幕| 国产精品你懂的在线播放| 一本大道久久东京热无码av|