楊鯤,楊彬彬,曾壘,高燦輝,劉姚軍
(國營蕪湖機(jī)械廠,安徽 蕪湖 241007)
Verilog HDL(Verilog Handware Description Language,即Verilog硬件描述語言)能夠形式化地抽象表示電路的行為和結(jié)構(gòu),具有強(qiáng)大的硬件描述功能。它允許設(shè)計(jì)者用其來進(jìn)行各種級別的邏輯設(shè)計(jì),以及數(shù)字邏輯系統(tǒng)的仿真驗(yàn)證、時(shí)序分析和邏輯綜合,由于其標(biāo)準(zhǔn)規(guī)范且易于掌握,已經(jīng)成為目前應(yīng)用最為廣泛的硬件描述語言之一。因此,采用Verilog HDL對CPLD進(jìn)行硬件編程就可以方便、穩(wěn)定、精確地實(shí)現(xiàn)對CPLD的功能測試。CPLD(Complex Programmable Logic Device,即復(fù)雜可編程邏輯器件)是20世紀(jì)80年代中期發(fā)展起來的一種新型邏輯器件,是目前數(shù)字系統(tǒng)設(shè)計(jì)的主要硬件之一,它可以在制造完成后由用戶根據(jù)自己的需要定義其邏輯功能。它具有編程靈活、集成度高、設(shè)計(jì)開發(fā)周期短、適用范圍寬、開發(fā)工具普及、運(yùn)算速度快、易于擴(kuò)展和移植、性價(jià)比高等特點(diǎn),可實(shí)現(xiàn)較大規(guī)模的電路設(shè)計(jì),因此被廣泛應(yīng)用于產(chǎn)品的原型設(shè)計(jì)和產(chǎn)品生產(chǎn)中。CPLD器件已成為電子產(chǎn)品中不可缺少的組成部分,它的設(shè)計(jì)和應(yīng)用成為電子工程師必備的一種技能。
ispLSI系列器件是由Lattice公司生產(chǎn)的基于與或陣列結(jié)構(gòu)的復(fù)雜PLD產(chǎn)品。芯片由若干個(gè)模塊組成,模塊之間通過全局布線區(qū)GRF連起來,每個(gè)模塊包括若干個(gè)通用邏輯塊GLB、輸出布線區(qū)ORP、若干個(gè)I/O引腳和專用輸入引腳。ispLSI1032芯片具有192個(gè)寄存器、64個(gè)通用I/O管腳、8個(gè)專用輸入管腳、4個(gè)專用時(shí)鐘輸入管腳和一個(gè)全局布線區(qū),最高頻率60MHz,最快延遲時(shí)間20ns。其功能框圖和引腳圖如圖1所示。
圖1 ispLSI1032功能框圖和引腳圖
由于是對芯片進(jìn)行功能測試,所以將ispLSI1032作為處理芯片,搭載外圍相應(yīng)測試電路即可。為了方便測試,需同時(shí)提供兩片芯片的接口,并將所有的I/O口做輸入輸出測試,且兩片芯片測試不受影響。整理出硬件需求如下:
(1)供電電源接口:外接+5V電源供電,提供電源和地輸入。
(2)ISP接口:用于對芯片進(jìn)行程序下載,使用跳線座區(qū)分兩片芯片的下載需求。
(3)I/O測試接口:將I/O口引出,便于外接示波器進(jìn)行波形觀察。
(4)功能控制開關(guān):選擇波形測試或者電平測試功能。
(5)電平控制開關(guān):在電平測試模式下,設(shè)置端口輸出高或低電平。
軟件需求如下:
(1)波形測試功能:對板載晶振提供的時(shí)鐘信號進(jìn)行分頻處理,在相應(yīng)端口輸出固定頻率的方波,并用示波器進(jìn)行檢測。
(2)電平測試功能:在輸出端口直接輸出高/低電平,通過發(fā)光LED直觀觀察。
(3)編號UA芯片測試接口功能為單數(shù)I/O口為信號輸入端口,雙數(shù)I/O口為信號輸出端口。
(4)編號UB芯片測試接口功能為單數(shù)I/O口為信號輸出端口,雙數(shù)I/O口為信號輸入端口。
單次芯片測試流程圖如圖2所示,在UA處測完后,重新燒寫程序,輸入輸出端口定義對調(diào),在UB處重復(fù)檢測過程。
圖2 測試流程圖
Lattice ispLSI1032芯片測試原理如圖3所示。X2為供電電源接口,輸入電壓+5VDC;X1為芯片下載接口,使用跳線座短接X101、X102區(qū)分兩片芯片的下載需求;單刀雙擲開關(guān)S1作為功能控制開關(guān),控制波形與電平測試,S3為電平測試的輸入電平選擇開關(guān);I/OA1-B4為測試孔,方便進(jìn)行波形測試,發(fā)光二極管則是觀察電平測試。
ispLSI1032芯片的Verilog HDL語言程序描述如下。模塊ispLSI1032_test 用來產(chǎn)生多路輸出信號,其中輸入時(shí)鐘clk頻率為8MHz,fun_switcher為功能選擇開關(guān),當(dāng)為高電平時(shí),選擇波形測試,當(dāng)輸入為低電平時(shí),選擇電平測試;cnt為分頻變量,用于將輸入時(shí)鐘進(jìn)行10分頻;為了方便測試,將32個(gè)輸出I/O口分為4組,并將分頻后的結(jié)果賦予到每組I/O口上,然后即可通過示波器進(jìn)行測試。
module ispLSI 1032_test (clk,fun_switcher,ioctl,out);
input clk.fun_switcher;
input [31:0] ioctl;
output [31:0] out;
reg [31:0] out;
reg [9:0] cnt;
reg [7:0] reg8;
reg clkadd;
always @(posedge clk)
begin
if (cnt==10)
begin
cnt<=10’d0;
cntadd++;
end
else
begin
cnt<=cnt+1;
out<=out;
end
end
always @(posedge clkadd)
begin
if (fun_switcher)
begin
out<=ioctl;
end
else
begin
reg8++;
out[7:0]<=reg8;
out[15:8]<=reg8;
out[23:16]<=reg8;
out[31:24]<=reg8;
end
end
endmodule
Lattice ispLSI1032芯片的測試方法已在實(shí)際工作中得到應(yīng)用,芯片測試速度、效率及精確度均滿足要求,工作穩(wěn)定可靠。本文在分析了ispLSI1032的內(nèi)部結(jié)構(gòu)及測試原理和需求的基礎(chǔ)上,利用硬件描述語言Verilog HDL進(jìn)行設(shè)計(jì),對芯片做功能測試,進(jìn)行篩選。該方法開發(fā)成本低,設(shè)計(jì)周期短,操作易上手,修改邏輯方便,能夠極大地降低人力成本,是一種快捷有效的測試方法。