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.

主站蜘蛛池模板: 99精品在线视频观看| 久久亚洲精少妇毛片午夜无码 | 日本不卡在线播放| 国产99精品久久| 中国一级特黄大片在线观看| 久久成人免费| 中文纯内无码H| 国产精品自在拍首页视频8| 日本亚洲成高清一区二区三区| 亚洲中文久久精品无玛| 亚洲一本大道在线| 青青草一区| 国产精品女熟高潮视频| 日韩欧美国产成人| 国产国模一区二区三区四区| 久久伊伊香蕉综合精品| 另类专区亚洲| 欧美成a人片在线观看| 国产呦视频免费视频在线观看| 99偷拍视频精品一区二区| 狼友视频一区二区三区| 国产成人三级在线观看视频| 国产精品免费电影| 无码高潮喷水在线观看| 亚洲IV视频免费在线光看| 欧美黄网站免费观看| 国产美女主播一级成人毛片| 亚洲第一区在线| 欧美成人一区午夜福利在线| 久久久久亚洲AV成人网站软件| 久久久久亚洲Av片无码观看| 国内毛片视频| 久久亚洲AⅤ无码精品午夜麻豆| 伊人久久久大香线蕉综合直播| 亚洲天堂2014| 日韩国产亚洲一区二区在线观看| 国产日韩AV高潮在线| 国产精品漂亮美女在线观看| 欧美性爱精品一区二区三区 | 国产精品视频猛进猛出| jizz国产视频| 亚洲色图欧美在线| 国产人在线成免费视频| 91区国产福利在线观看午夜| 性69交片免费看| 国产成人久久777777| 国产爽歪歪免费视频在线观看 | 亚洲αv毛片| 欧美不卡视频在线观看| 国产小视频免费| 九九热精品在线视频| 国产亚洲男人的天堂在线观看| 91在线视频福利| 亚洲人成高清| 国产精品无码影视久久久久久久| 亚洲色精品国产一区二区三区| 99ri精品视频在线观看播放| 欧美精品黑人粗大| 欧美黄色网站在线看| 少妇高潮惨叫久久久久久| 国产区在线看| 亚洲中字无码AV电影在线观看| 熟女视频91| 亚洲日韩精品伊甸| 丁香综合在线| 成人一级免费视频| 国产91麻豆免费观看| 福利片91| 欧美一级大片在线观看| 亚洲午夜天堂| 九色免费视频| 亚洲男人的天堂在线| 亚洲二区视频| 国产国模一区二区三区四区| 日本高清免费一本在线观看 | 亚洲天堂视频网| 四虎国产在线观看| 国产精品视屏| 依依成人精品无v国产| 国产欧美视频在线| 欧美激情,国产精品| 亚洲国产中文综合专区在|