摘 要:為了能顯示穩定的圖像,對掃描電路的速度要求很高,特別是在實現灰度控制時,要求更高。所以,精心地設計掃描電路是提高圖像穩定性的關鍵。介紹LED大屏幕顯示電路結構及掃描電路的設計方法,給出Altera公司的EPM7128在大屏幕掃描電路中的設計實例,闡述可編程邏輯器件在高速數字系統應用中的優點。通過實驗,掃描圖像非常穩定,充分體現了可編程邏輯器件在高速復雜數學系統中的優勢。
關鍵詞:可編程邏輯器件;點時鐘;掃描單元;顯示存儲器;VHDL語言
中圖分類號:TP311.1文獻標識碼:B
文章編號:1004-373X(2008)24-017-03
Design of Big Screen Scan Circuit Based on CPLD
ZHENG Baohua1,2
(1.College of Instrument Science and Electronic Engineering,Jilin University,Changchun,130026,China;
2.Jilin Institute of Chemical Technology,Jilin,132022,China)
Abstract:In order to display a stable image,the speed of scan circuit is needed,especially to realize grey control.The design of scan circuit is a key to improve scability of image.The design method of LED big screen scan circuit is introduced in this paper,and the virtue of Programmable Logic Device(PLD) application on high speed digital system is presented.An application example based on EPM7128 of Altera Corp.and its programme are also provided.According to the experiment,scan image is stable,and advantages of PLD in high speed complex digital system are proved.
Keywords:programmable logic device;bit-colck;scan unit;display memory;VHDL-language
1 引 言
LED大屏幕是由許多相互獨立的發光二極管排列而成的,由于發光管的離散性,決定了其發光控制和驅動只能以數字方式進行[1]。大屏幕的顯示控制方式可以靜態驅動也可以動態掃描驅動。相比較而言,動態掃描驅動方式可以節省大量的硬件成本,所以,一般情況下均采用動態掃描驅動方式。為了能顯示穩定的圖像,對掃描電路的速度要求很高,特別是實現灰度控制時,要求更高。所以,精心地設計掃描電路是提高圖像穩定性的關鍵。
在此給出了以Altera公司的EPM7128可編程邏輯器件為核心的大屏幕動態掃描電路,其數據點時鐘可達20 MHz 。提高了圖像的穩定性,并且使每個掃描單元可控制較大面積的屏
體。
2 屏體顯示電路
屏體顯示電路俗稱燈板,最常用的是采用8×8 LED點矩陣構成。這就決定了掃描行周期只能為8的整數倍,基于亮度和硬件成本的綜合考慮,一般采用16行為1個掃描周期[2]。發光器件選用D05881行共陽點矩陣構成,掃描單元的每行二極管共陽連接,由掃描電路輸出的行地址經4∶16譯碼控制。由于掃描單元的每行二極管共陽連接電流比較大,如果用單只大功率管子驅動,會使局部電流很大而增加制版的難度。這里采用多支小功率P946并聯驅動,由于P946在物理上是分開的,這樣可使大電流分散,并且不增加硬件成本。
行數據由掃描控制電路從顯示存儲器中讀出,串行輸出到燈板,當每行數據串行發送完之后輸出鎖存信號和行地址信號。電路如圖1所示。

3 動態掃描電路
動態掃描的核心是由EPM7128可編程邏輯器件來控制的(見圖2),EPM7128要按時序形成對雙端口顯示存儲器讀操作的地址信號(ADD_1)和讀(RD)信號,讀入數據進行并/串轉換后輸出到顯示電路。同時,為完成掃描顯示EPM7128要按時序形成數據移位時鐘信號(CLK_1)、鎖存信號(SUOCUN)、行地址信號(ADD_2)。

傳統的掃描控制多由單片機構成,筆者曾用12片華邦的78E58(24 MHz)單片機實現9 m2大屏幕的掃描,雖然精心設計了指令代碼,但在掃描速度上還是捉襟見肘。如果由EPM7128實現掃描則很容易實現數據點時鐘20 MHz或更高,并且在1片器件上可實現多路數據輸出,很好地改善了單片機掃描速度慢的問題,提高了顯示圖像的穩定度。
4 頂層設計及仿真
可編程邏輯器件的設計方法與傳統的數字邏輯設計方法不同,是采用自上而下的設計流程。同時,在設計過程中可通過仿真手段驗證電路功能是否有效[3]。
該系統以16×32點陣單元為例進行測試。頂層原理圖文件由2個模塊構成(見圖3)。

其中,74165模塊調用了max2lib\\\\mf庫中的74165模塊,完成數據的并/串轉換。READ_1模塊完成讀顯示存儲器、控制掃描輸出等功能,采用VHDL等硬件描述語言的輸入方法,使系統的設計更加靈活[4]。下面是程序源文件清單,圖4為仿真后的波形。
其中,CLK_1為點時鐘;RD為存儲器讀信號;ADD_1為存儲器地址;ADD_2為掃描行地址;SUOCUN為行鎖存信號。

READ_1模塊源文件:
__ Max+Plus II VHDL Template
__ Clearable flipflop with enable
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;
ENTITY read_1 IS
PORT
(reset,clk: IN STD_LOGIC;--復位,時鐘輸入信號
rd,clk_1 : out STD_LOGIC;--讀信號,串行時鐘
add_1 : out std_logic_vector(6 downto 0);--存儲器地址
add_2: out std_logic_vector(3 downto 0);--掃描行地址
suocun : out std_logic);--鎖存信號輸出
END read_1;
ARCHITECTURE a OF read_1 IS
SIGNAL count : INTEGER RANGE 0 TO 15; --模16計數器,形成rd信號
SIGNAL count_2 : INTEGER RANGE 0 TO 1;--模2計數器,形成clk_1時鐘
signal count_b : std_logic_vector(3 downto 0);--掃描行地址內部信號
signal count_a : std_logic_vector(6 downto 0);--存儲器地址內部信號
signal count_c : INTEGER RANGE 0 TO 127;--控制形成鎖存信號,與實際屏寬而定
signal indata: std_logic; --控制rd_1信號
signal rd_1 : std_logic; --讀信號內部信號
signal sss: std_logic; --掃描行控制信號
signal ale : std_logic;
signal sss_1 : std_logic;
BEGIN
PROCESS (clk,RESET)
BEGIN
IF RESET = ′1′ THEN
COUNT<= 0;
ELSIF (clk′EVENT AND clk = ′0′) THEN
count<=count+1;
END IF;
END PROCESS;
PROCESS (clk,RESET)
BEGIN
IF RESET = ′1′ THEN
COUNT_2<= 0;
ELSIF (clk′EVENT AND clk = ′0′) THEN
count_2<=count_2+1;
END IF;
END PROCESS;
PROCESS (clk,RESET)
BEGIN
if reset=′1′ then
clk_1<=′0′;
elsif clk′event and clk=′1′ then
if count_2=1 then
clk_1<=′0′;
else clk_1<=′1′;
end if;
end if;
END PROCESS ;
PROCESS (clk,RESET)
BEGIN
if reset=′1′ then
indata<=′0′;
elsif clk′event and clk=′0′ then
if count=15 then
indata<=′0′;
else
indata<=′1′;
end if;
end if;
END PROCESS ;
PROCESS (clk,RESET)
BEGIN
if reset=′1′ then
ale<=′0′;
elsif clk′event and clk=′1′ then
if count=15 then
ale<=′0′;
else
ale<=′1′;
end if;
end if;
END PROCESS ;
PROCESS (clk,RESET)
BEGIN
if reset=′1′ then
rd_1<=′0′;
elsif clk′event and clk=′0′ then
if indata=′0′ then
rd_1<=′0′;
else
rd_1<=′1′;
end if;
end if;
END PROCESS ;
PROCESS (clk,RESET)
BEGIN
if reset=′1′ then
sss_1<=′0′;
elsif clk′event and clk=′0′ then
if sss=′0′ then
sss_1<=′0′;
else
sss_1<=′1′;
end if;
end if;
END PROCESS ;
PROCESS(reset,indata)
BEGIN
if reset=′1′ then
count_a<=\"0000000\";
elsif (indata′event and indata=′0′) then
count_a<=count_a+1;
end if;
END PROCESS;
PROCESS(reset,clk)
BEGIN
if reset=′1′ then
count_c<=0;
elsif (clk′event and clk=′0′) then
count_c<=count_c+1;
if(count_c=127) then
sss<=′0′;
else
sss<=′1′;
end if;
end if;
END PROCESS;
PROCESS(reset,sss_1)
BEGIN
if reset=′1′ then
count_b<=\"0000\";
elsif (sss_1′event and sss_1=′0′) then
count_b<=count_b+1;
end if;
END PROCESS;
add_1<=count_a;
add_2<=count_b;
rd<=rd_1;
suocun<=sss_1;
END a;
5 結 語
給定的掃描電路點時鐘為20 MHz,它是普通單片機串行時鐘的20倍。并且,在同一芯片上可實現多路串行輸出。這樣,一片EPM7128可控制較大面積的掃描單元<sup>[5]</sup>。通過實驗,掃描圖像非常穩定,充分體現了可編程邏輯器件在高速、復雜數字系統應用中的優勢。
參考文獻
[1]劉澤民.大屏幕視頻真彩色顯示技術[J].電子技術,1997(4):19-21.
[2]張藝.LED智能顯示屏驅動顯示電路[J].電子技術,1994(4):35-37.
[3]馬彧,王丹利,王麗英.CPLD/FPGA可編程邏輯器件實用教程 [M].北京:機械工業出版社,2006.
[4]侯伯亨,股新.VHDL硬件描述語言與數字邏輯電路設計[M].西安:西安電子科技大學出版社,2000.
[5]李國麗,朱維勇,欒銘.EDA與數字系統設計 [M].北京:機械工業出版社,2005.
[6]王春玲,吳順偉.FPGA/CPLD選型及與其他技術的融合.現代電子技術,2007,30(16):30-33,40.
作者簡介 鄭寶華 男,1963年出生,吉林扶余人,在讀博士,副教授。主要從事測控技術及儀器方面的研究工作。