999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VHDL語言的8×8點陣模塊控制器設計

2018-09-26 11:34:32楊斌李亞峻喬廣欣李松李毅
數字技術與應用 2018年5期

楊斌 李亞峻 喬廣欣 李松 李毅

摘要:介紹了LED點陣顯示模塊的硬件連接、MAX7219的初始化與工作時序,用VHDL語言編程實現了時鐘分頻、數據的存儲與調用、MAX7219控制器的設計。將Basys2開發板與點陣模塊相連,將程序下載到FPGA上,實現了8×8點陣的顯示,驗證了設計的正確性,該設計具有實際應用價值。

關鍵詞:現場可編程門陣列;VHDL語言;MAX7219芯片;點陣顯示

中圖分類號:TP273 文獻標識碼:A 文章編號:1007-9416(2018)05-0006-03

LED點陣顯示系統不僅能夠靜態顯示字符和圖像,而且能夠動態顯示文字、動畫、視頻等信息,在廣告、信息發布、體育比賽、工業等各個領域都有廣泛應用。

LED點陣顯示控制器的種類不少,包括單片機[1]、ARM[2, 3]、FPGA[4],等等。本文采用DIGILENT公司的Basys2便攜式開發板,它是完整的即用型硬件系統,適于從基本邏輯器件到復雜控制器的電路設計,其上嵌有Xilinx Spartan-3E系列FPGA器件[5]。

8×8點陣有16個引腳,如果直接與微處理器相連占用引腳資源太多,實際多用譯碼器、串并轉換芯片控制點陣。本文采用的8×8點陣模塊由一片MAX7219驅動。

1 基于MAX7219的8×8點陣模塊

1.1 8×8點陣模塊的硬件連接

圖1所示為MAX7219芯片的主要引腳。它只有三個輸入端DIN、CS、CLK,可以與所有通用的微處理器相連,所以由MAX7219驅動的8×8點陣模塊克服了點陣引腳過多的問題。

MAX7219芯片的輸出端DIG0~DIG7連到8×8點陣H1~H8行,SEG DP、SEG A~G連到8×8點陣L1~L8列,DOUT作為串行輸出可用于級聯擴展。MAX7219中含有BCD編碼器(本文未用到)、多路掃描回路(對DIG0~DIG7以不低于800Hz的頻率自動輪詢掃描)、段驅動器(驅動SEG DP、SEG A~G8段)和8×8 SRAM靜態隨機存儲器(用于存儲數據)。

1.2 MAX7219的初始化與數據的存取

在DIN端輸入串行的16位數據,數據中包含如表1所示的信息。

MAX7219芯片的寄存器分為控制寄存器和數據寄存器兩種。

控制寄存器有五個,分別是譯碼模式、亮度、掃描限、掉電和顯示檢測,寄存器地址依次為9、A、B、C、F,每個寄存器初始化的所有可能設置詳見MAX7219說明文檔[6]。本設計的初始化設定值如下:0900,譯碼模式設為不譯碼,數據存儲器中的8位數據直接輸出給8×8點陣的8列;0A08,設為中等亮度;0B07,掃描限設為8個,對8×8點陣的8行輪詢掃描;0C01,設為正常工作模式,不掉電;0F00,設為正常工作模式,關顯示檢測。

數據寄存器由片上的8×8 SRAM 實現。寄存器地址從1到8,對應于MAX7219芯片的DIG0~DIG7引腳、對應于8×8點陣的H1~H8行。SRAM的數據寬度為8,其中存儲的數據值對應于MAX7219芯片的SEG DP、SEG A~SEG G引腳、對應于8×8點陣的L1~L8列。地址nH中存儲的數據值就是8×8點陣第n行待顯示的信息。

在VHDL程序設計中,將MAX7219的初始化設定值與8×8點陣中待顯示的信息存儲在ROM IP核(romip模塊)中,數據的存儲格式如下:

memory_initialization_radix=16;

memory_initialization_vector=

0900, 0A08, 0B07, 0C01, 0F00,

0146, 02C9, 0349, 0446, 0549, 0649, 07E6, 0800;

圖2所示的ctrl_addr模塊用于產生romip模塊所需的地址addr,使addr自加1(如圖3所示),按照地址依次從romip模塊中取出這13個16位并行數據dout,輸入到MAX7219控制器模塊。

2 MAX7219控制器設計

2.1 MAX7219的工作時序

如圖4所示,當數據鎖存信號CS為低電平時,從DIN串行輸入的數據D15~D0在每個時鐘CLK上升沿依次被移入內部的16 位移位寄存器。連續輸入16位數據后,在CS上升沿,根據這16位數據的D11~D8位地址將其D7~D0位的值鎖存到相應的控制寄存器或數據寄存器中。

2.2 MAX7219控制器的VHDL程序設計

為了使MAX7219正常工作,需要按照圖4所示的工作時序用VHDL語言編寫MAX7219的控制程序ctrl_dot.vhd,圖5為其輸入輸出端口信息。

ctrl_dot模塊實現的是在輸入時鐘clk的每個上升沿,將16位并行數據data(15:0)轉換為串行數據輸出給din,同時產生MAX7219芯片所需的數據鎖存信號load_cs和時鐘信號clk_max7219,分別與8×8點陣模塊的DIN、CS、CLK端相連,控制8×8點陣模塊顯示。用if語句編程實現的主要程序段及解讀如下。

if rising_edge(clk) then

if (loadcs_tmp='1') then -- ①

clk_max7219<='0';

if (data/=data_cmp) then

data_cmp <= data; --用于判斷數據是否更新

data_tmp <= data; --裝載新數據

loadcs_tmp<='0'; shift_f<='1';

end if;

else

if shift_f='1' then -- ②允許移位

din<=data_tmp(15); --高位輸出給din

data_tmp(15 downto 1)<=data_tmp(14 downto 0); --低15位左移一位

clk_max7219<='0'; shift_f<='0';

else --③

clk_max7219<='1'; --產生時鐘clk_max7219的上升沿

if cnt

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

else --16位移完

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

loadcs_tmp<='1'; --產生load_cs的上升沿,鎖存數據

end if;

end if;

end if;

load_cs<=loadcs_tmp;

end if;

①當loadcs_tmp為1時,使clk_max7219為0;當檢測到輸入值data與原數據data_cmp不同時,用data值更新data_cmp(準備下一次比較的數據)和data_tmp(裝載新數據);使loadcs_tmp為0,移位標志位shift_f置1,允許數據移位。當data與data_cmp相同時,表明數據未更新,loadcs_tmp為1,保持在①狀態繼續檢測數據是否更新。

②當loadcs_tmp為0、shift_f為1時,將data_tmp的最高位輸出給din,其他位左移一位,實現16位并行數據data_tmp的逐位左移串行輸出,先高位后低位;使clk_max7219為0、shift_f為0。

③當loadcs_tmp為0、shift_f為0時,使clk_max7219由0變為1,din每移一位產生一個clk_max7219時鐘。當cnt<15時,16位數據未傳完,cnt自加1,使shift_f為1,在下一個clk時鐘上升沿返回到②繼續串行輸出。當cnt=15時,表明16位數據全部串行輸出完畢,使cnt清零,shift_f為0;使 loadcs_tmp由0變為1,產生數據鎖存信號的上升沿,鎖存數據,在下一個clk時鐘上升沿返回到①檢測數據是否更新。

3 時鐘分頻模塊設計

時鐘分頻模塊clkdiv_50M將Basy2開發板上提供的50MHz時鐘分頻,需保證提供給ctrl_dot的時鐘clk_16data與提供給ROM IP核的時鐘clk_rom匹配,只有當ctrl_dot中的16位數據全部串行輸出后才允許更新data。通過分析ctrl_dot.vhd程序可知,16位數據傳輸至少需要34個clk_16data周期,所以clk_16data的時鐘頻率必須高于34倍的clk_rom時鐘頻率。

4 基于MAX7219的8×8點陣顯示效果

將時鐘分頻模塊clkdiv_50M、ROM地址模塊ctrl_addr、ROM IP核romip和MAX7219驅動模塊ctrl_dot連接起來,添加引腳約束文件后,進行綜合、實現、產生可編程文件,下載到Basys2開發板上,顯示出如圖7所示的效果。

5 結語

本文著重介紹了MAX7219控制器的VHDL程序設計。將MAX7219的寄存器地址、初始化設定值和點陣待顯示信息組成16位數據存入ROM IP核中,然后用if嵌套語句編程實現了16位并行數據的串行輸出,從而控制MAX7219驅動LED點陣顯示。

本文將大量數據存入ROM中提高了編程效率。另外,一個8×8點陣模塊只需一片MAX7219芯片,無論從軟件編程還是從硬件實現來看,都比用譯碼器與74HC595的組合驅動更實用,有更廣泛的應用價值。

參考文獻

[1]朱海洋,歐陽明星,張俊武.基于Android控制的LED點陣顯示設計與實現[J].液晶與顯示,2016,31(11):1064-1069.

[2]趙婷婷,王先全,姜增暉,王培懿.基于ARM的LED點陣自動調光控制系統的設計[J].儀表技術與傳感器,2016,(8):63-66,96.

[3]文瑾,施連敏.基于KW01-Zigbee MCU無線LED點陣屏控制系統的設計與實現[J].福州大學學報(自然科學版),2017,45(1):32-36.

主站蜘蛛池模板: 亚洲人成网站在线播放2019| 亚洲午夜福利在线| 免费无码网站| 人人91人人澡人人妻人人爽| 小说 亚洲 无码 精品| 亚洲第一页在线观看| 国产成人精品一区二区三区| 色呦呦手机在线精品| 国产第一页免费浮力影院| 国产美女丝袜高潮| 日韩无码视频专区| 国产精品第页| 在线欧美a| 国产精品爽爽va在线无码观看| 91精品专区| 日韩一区二区三免费高清| 亚洲国产成人精品一二区| 午夜视频在线观看区二区| 日韩AV手机在线观看蜜芽| 欧美日韩北条麻妃一区二区| 久久久久人妻精品一区三寸蜜桃| 国产福利影院在线观看| 久久精品国产一区二区小说| 成年午夜精品久久精品| 九九九精品视频| 国产H片无码不卡在线视频 | 超碰aⅴ人人做人人爽欧美 | 亚洲v日韩v欧美在线观看| 91久久大香线蕉| 亚洲成人免费在线| 福利片91| 男人的天堂久久精品激情| 四虎成人精品在永久免费| 久久精品国产精品国产一区| 国产亚洲现在一区二区中文| 国产综合在线观看视频| 久久99精品国产麻豆宅宅| 国产丝袜无码精品| 91九色国产porny| 亚洲午夜国产片在线观看| 国产精品大尺度尺度视频| 免费观看精品视频999| 在线观看无码av五月花| 无码av免费不卡在线观看| 少妇精品在线| 欧美精品不卡| 亚洲国产中文欧美在线人成大黄瓜 | 麻豆国产在线不卡一区二区| 美女内射视频WWW网站午夜 | 国产乱子伦精品视频| 99中文字幕亚洲一区二区| 欧美a级在线| 日韩欧美网址| 人妻21p大胆| 国产精品女熟高潮视频| 一级成人a毛片免费播放| 尤物精品国产福利网站| 国产激情无码一区二区免费| 青青草一区| 三级国产在线观看| 国产清纯在线一区二区WWW| av一区二区三区在线观看| 97人人做人人爽香蕉精品 | 在线看片免费人成视久网下载| 在线色综合| 欧美乱妇高清无乱码免费| 久久特级毛片| 一本久道久综合久久鬼色| 日韩区欧美区| 午夜不卡视频| 57pao国产成视频免费播放| 欧美黄色a| 欧美影院久久| 久久精品日日躁夜夜躁欧美| 久久精品丝袜| 亚洲成人福利网站| 97超碰精品成人国产| 欧美不卡视频在线观看| 日本久久久久久免费网络| 99精品伊人久久久大香线蕉 | 国产精品开放后亚洲| 亚洲精品卡2卡3卡4卡5卡区|