PLD和FPGA有什么區(qū)別與聯(lián)系?PLD高速通訊USB轉(zhuǎn)移技術(shù)分析
PLD和FPGA有什么區(qū)別與聯(lián)系?
PLD(Programmable Logic Device)是可編程邏輯器件的總稱。早期的PLD多屬于EEPROM或乘積項(xiàng)(Product Term)結(jié)構(gòu)。FPGA(Field Programmable Gate Arry)是指在線可編程邏輯陣列,最早為Xilinx公司推出。多為SRAM框架或查表框架,需外接配置用的EPROM下載。Xilinx將SRAM框架或查表框架,需外接配置用的EPROM下載的PLD稱之為FPGA。把Flash、EEPROM框架或乘積項(xiàng)框架的PLD稱為CPLD。 Altera把自己的PLD產(chǎn)品MAX系列/FLEX/ACEX/APEX系列稱為CPLD。由于FLEX/ACEX/APEX系列也是SRAM型,需外接配置用的EPROM下載,很多人把Altera的FLEX/ACEX/APEX系列產(chǎn)品也稱為FPGA。
本文引用地址:http://2s4d.com/article/201710/365215.htmPLD高速通訊USB轉(zhuǎn)移技術(shù)分析
可編程邏輯器件(PLD)是20世紀(jì)70年代在ASIC設(shè)計(jì)的基礎(chǔ)上發(fā)展起來的一種劃時(shí)代的新型邏輯器件。自PLD器件問世以來,制造工藝上采用TTL、CMOS、ECL及靜態(tài)RAM技術(shù),器件類型有PROM、EPROM、 E2PROM、FPLA、PAL、GAL、PML及LCA等。PLD在性能和規(guī)模上的發(fā)展,主要依賴于制造工藝的不斷改進(jìn),高密度PLD是VLSI集成工藝高度發(fā)展的產(chǎn)物。80年代末,美國ALTERA和XILINX公司采用EECMOS工藝,分別推出大規(guī)模和超大規(guī)模的復(fù)雜可編程邏輯器件(CPLD)和現(xiàn)場可編程邏輯門陣列器件(FPGA)。這種芯片在達(dá)到高集成度的同時(shí),所具有的應(yīng)用靈活性和多組態(tài)功能是以往的LSI/VLSI電路無法比擬的。自從跨入90年代以來,可編程邏輯器件CPLD/FPGA得到了飛速發(fā)展,向高集成度、高速度和低價(jià)位方向不斷邁進(jìn);不僅具有電擦除特性,而且出現(xiàn)了邊緣掃描及在線編程等高級(jí)特性;其應(yīng)用領(lǐng)域不斷擴(kuò)大,可用于狀態(tài)機(jī)、同步、譯碼、解碼、計(jì)數(shù)、總線接口、串并轉(zhuǎn)換等很多方面,而且在信號(hào)處理領(lǐng)域的應(yīng)用也活躍起來。使用CPLD可以提高系統(tǒng)集成度、降低噪聲、增強(qiáng)系統(tǒng)可靠性并降低成本。
本文主要介紹ATMEL公司的CPLD芯片ATF1508AS的特點(diǎn)及應(yīng)用。ATF1508AS是利用ATMEL成熟的電擦除技術(shù)實(shí)現(xiàn)的高性能、高密度的復(fù)雜可編程邏輯器件(CPLD),與ALTERA公司的EPM7000系列引腳完全兼容;可以將EPM7000的POF文件轉(zhuǎn)換為適合ATF1508AS的工業(yè)標(biāo)準(zhǔn)JEDEC編程文件,下載到ATF1508AS芯片中。
1 ATF1508AS的特點(diǎn)
ATF1508AS是利用ATMEL成熟的電擦除技術(shù)實(shí)現(xiàn)的高性能、高密度的復(fù)雜可編程邏輯器件(CPLD)。它有128個(gè)邏輯宏單元和最大100個(gè)輸入,能很容易地集成一系列TTL、SSI、MSI、LSI和傳統(tǒng)PLD的邏輯功能。ATF1508AS的增強(qiáng)型路由開關(guān)矩陣增加了可用的門數(shù)和設(shè)計(jì)改變時(shí)引腳鎖定的成功率,這是非常重要的。ATF1508AS有96個(gè)雙向I/O引腳和4個(gè)輸入引腳。這4個(gè)輸入引腳也可以用于全局控制信號(hào)、全局寄存器時(shí)鐘、全局復(fù)位和全局輸出允許。
128個(gè)宏單元中的每一個(gè)都產(chǎn)生一個(gè)隱藏的反饋回路到全局總線,每一個(gè)輸入引腳、I/O引腳也都匯入全局總線。每個(gè)邏輯塊的開關(guān)矩陣從全局總線中選擇 40個(gè)獨(dú)立的信號(hào),每一個(gè)宏單元也產(chǎn)生一個(gè)返送邏輯項(xiàng)到局部總線。宏單元之間的級(jí)聯(lián)邏輯可以快速有效地實(shí)現(xiàn)復(fù)雜的邏輯功能。ATF1508AS包括八個(gè)這樣的邏輯鏈,每一個(gè)都能通過扇入最多40個(gè)乘積項(xiàng)實(shí)現(xiàn)邏輯項(xiàng)求和。
ATF1508AS是在系統(tǒng)編程(ISP)器件。它用工業(yè)標(biāo)準(zhǔn)的4腳JTAG接口(IEEE標(biāo)準(zhǔn)1149.1),完全與 JTAG的邊界掃描描述語言(BSDL)兼容。ISP允許器件不用從印刷電路板上拿走就可編程;除簡化生產(chǎn)流程外,ISP也允許通過軟件進(jìn)行設(shè)計(jì)修改。
ATF1508AS的引腳保持電路提供對(duì)所有輸入和I/O引腳的設(shè)置。當(dāng)任何引腳驅(qū)動(dòng)到高電平或低電平,緊接著引腳被懸空時(shí),引腳將保持先前的高電平或低電平狀態(tài)。這種電路防止沒有用到的輸入和I/O線懸空而成為中間的電壓值,這會(huì)導(dǎo)致不必要的功耗和系統(tǒng)噪聲。引腳保持電路去除了對(duì)外部上拉電阻的需要和直流功耗。
ATF1508AS的加密特性可以保護(hù)ATF1508AS的設(shè)計(jì)內(nèi)容。兩個(gè)字節(jié)(16位)的用戶信號(hào)可被用戶存取,能存放工程名、部件號(hào)、版本或日期等,而且用戶信號(hào)的存取不受加密熔絲的狀態(tài)影響。
ATF1508AS具有上電復(fù)位特性。在上電期間,所有的I/O引腳將為三態(tài),直到VCC到達(dá)上電電壓,這樣可防止在上電期間發(fā)生總線競爭。ATF1508AS的寄存器設(shè)計(jì)成在上電時(shí)復(fù)位,從VCC上升到VRST后的微小的延時(shí),所有的寄存器將復(fù)位到低電平,輸出狀態(tài)要根據(jù)緩沖器的極性設(shè)置。這種特性對(duì)于狀態(tài)機(jī)的初始化是比較關(guān)鍵的。
2 ATF1508AS的宏單元
ATF1508AS的宏單元如圖1所示。它的宏單元非常靈活,足以支持高復(fù)雜邏輯功能并且高速工作。宏單元包括五個(gè)部分:乘積項(xiàng)和乘積項(xiàng)選擇多路復(fù)用器、或/異或/級(jí)聯(lián)邏輯、觸發(fā)器、輸出選擇和使能、邏輯陣列輸入。沒有用到的宏單元可由編譯器禁止以降低功耗。
?。?)乘積項(xiàng)和乘積項(xiàng)選擇矩陣
每一個(gè)宏單元有5個(gè)乘積項(xiàng),每個(gè)乘積項(xiàng)作為它的輸入從全局總線和局部總線接收所有信號(hào)。乘積項(xiàng)選擇矩陣(PTMUX)按需分配這5個(gè)乘積項(xiàng)到宏單元的邏輯門,也負(fù)責(zé)分配控制信號(hào)。乘積項(xiàng)選擇矩陣的編程是由設(shè)計(jì)編譯器決定的,編譯器將選擇優(yōu)化的宏單元配置。
(2)或/異或/級(jí)聯(lián)邏輯
ATF1508AS的邏輯結(jié)構(gòu)是為有效地支持所有的邏輯而設(shè)計(jì)的。在一個(gè)宏單元內(nèi),所有的乘積項(xiàng)可以被布進(jìn)或門,產(chǎn)生一個(gè)5輸入的與/或求和項(xiàng)。通過鄰近的宏單元扇入額外的乘積項(xiàng),可以擴(kuò)展到40個(gè)乘積項(xiàng)而只有很小的延時(shí)。宏單元的異或門允許有效地實(shí)現(xiàn)比較和算術(shù)功能,其中異或門的一個(gè)輸入來自或運(yùn)算的求和項(xiàng),另一個(gè)輸入可以是一個(gè)乘積項(xiàng)或一個(gè)固定的高電平或低電平。對(duì)于組合邏輯輸出,固定電平允許極性選擇;對(duì)于時(shí)序邏輯,固定電平允許利用反演規(guī)則(摩根定律的推論)化簡乘積項(xiàng)。異或門也可以用于仿真T型和JK型觸發(fā)器。
?。?)觸發(fā)器
ATF1508AS的觸發(fā)器有非常靈活的數(shù)據(jù)和控制功能。觸發(fā)器的輸入可以來自于異或門、一個(gè)單獨(dú)的乘積項(xiàng)或直接由I/O口輸入。選擇單獨(dú)的乘積項(xiàng)允許在一個(gè)組合邏輯輸出宏單元內(nèi)生成一個(gè)隱藏的寄存器反饋(這個(gè)特性是由fitter軟件自動(dòng)實(shí)現(xiàn)的)。除D、T、JK和SR類型外,ATF1508AS的觸發(fā)器還可配置為鎖存器。在這種模式中,當(dāng)時(shí)鐘為高時(shí),數(shù)據(jù)通過;當(dāng)時(shí)鐘為低時(shí),數(shù)據(jù)鎖存。
時(shí)鐘信號(hào)可以是全局CLK信號(hào)(GCK)和一個(gè)單獨(dú)的乘積項(xiàng)。觸發(fā)器在時(shí)鐘的上升沿改變狀態(tài)。當(dāng)GCK信號(hào)作為時(shí)鐘信號(hào)時(shí),宏單元的一個(gè)乘積項(xiàng)可以選擇作為時(shí)鐘允許信號(hào)。當(dāng)使用時(shí)鐘使能功能時(shí),使能信號(hào)(乘積項(xiàng))為低時(shí),所有的時(shí)鐘邊沿將被忽略。觸發(fā)器的異步復(fù)位信號(hào)(AR)可以是全局復(fù)位信號(hào)(GCLEAR)、一個(gè)乘積項(xiàng)或不使用。AR也可以是GCLEAR和一個(gè)乘積項(xiàng)的邏輯或輸出。異步置位信號(hào)(AP)可以是一個(gè)乘積項(xiàng)或不使用。
?。?)輸出選擇和使能
ATF1508AS宏單元的輸出可以選擇為寄存器型和組合型。隱藏的反饋信號(hào)可以是組合或寄存器信號(hào)而不管輸出是組合型還是寄存器型。輸出使能多路復(fù)用器(MOE)控制輸出使能信號(hào)。如果是簡單的輸出操作,任何緩沖器都可以永久使能。如果引腳用作輸入,緩沖器也可以永久禁止。在這種配置下,所有的宏單元資源仍然可用,包括隱藏的反饋信號(hào)、擴(kuò)展器和級(jí)聯(lián)邏輯。每一個(gè)宏單元的輸出使能信號(hào)都可以選擇一個(gè)全局輸出使能信號(hào)。該器件有6 個(gè)全局輸出使能信號(hào)(OE)。
?。?)邏輯陣列輸入
邏輯陣列輸入包括全局總線/開關(guān)矩陣和返送總線:
◇ 全局總線/開關(guān)矩陣
全局總線包括所有的輸入和I/O引腳信號(hào)以及所有128個(gè)宏單元的隱藏反饋信號(hào)。每個(gè)邏輯塊的開關(guān)矩陣將全局總線的所有信號(hào)作為其輸入。在軟件的控制下,這些信號(hào)中最多可以有40個(gè)被選擇作為邏輯塊的輸入。
◇ 返送總線
每一個(gè)宏單元可以產(chǎn)生一個(gè)返送乘積項(xiàng)。這個(gè)信號(hào)連接到局部總線上,并且對(duì)16個(gè)宏單元有效,它是宏單元一個(gè)乘積項(xiàng)的反極性。每個(gè)局部總線的16個(gè)返送項(xiàng)允許產(chǎn)生高扇入求和項(xiàng)(最多21個(gè)乘積項(xiàng)),而只有很小的延時(shí)。
3 設(shè)計(jì)軟件支持
ATMEL公司提供了CPLD的設(shè)計(jì)軟件,而且很多第三方的工具軟件也支持ATF1508AS的設(shè)計(jì),可以用多種高級(jí)描述語言和格式進(jìn)行邏輯描述,如CUPL、ABEL、VHDL等。由于ATF1508AS與ALTERA公司的EPM7000系列是完全引腳兼容的,因此可以使用 ALTERA公司的MAXPLUSII軟件。它能進(jìn)行VHDL語言的編譯和綜合,使用方便,功能強(qiáng)大。MAXPLUSII綜合后產(chǎn)生適合ALTERA的 CPLD編程的POF文件,使用POF2JED軟件(ATMEL公司提供),就可將POF文件轉(zhuǎn)換為適合ATF1508AS的工業(yè)標(biāo)準(zhǔn)JEDEC編程文件,下載到ATF1508AS芯片中。
4 器件編程
ATF1508AS器件是利用4腳JTAG協(xié)議在系統(tǒng)編程(ISP)的。ATMEL提供了ISP硬件(下載電纜)和軟件,以允許從PC對(duì)ATF1508AS進(jìn)行編程。若要允許ISP編程支持“自動(dòng)測試裝置(ATE)”向量,必須通過ATMEL的ISP軟件生成串行向量格式(SVF)文件,也可轉(zhuǎn)換為除SVF外的其它ATE測試格式。ATF1508AS器件也可以用標(biāo)準(zhǔn)的第三方編程器來編程,這時(shí)JTAG ISP口可以被禁止從而允許這四個(gè)額外的I/O引腳用于邏輯功能。
ATF1508AS還有一個(gè)特性就是如果由于任何原因編程過程被中斷,則器件將被鎖定以防止輸入和I/O引腳被驅(qū)動(dòng)。在這種狀態(tài)下,輸入和I/O引腳缺省下為高阻狀態(tài)。在編程器件時(shí),輸入和I/O引腳也將為高阻狀態(tài)。此外,引腳保持電路設(shè)置在器件編程期間將保持以前的狀態(tài)。 ATF1508AS器件出廠時(shí)被初始化為已擦除狀態(tài),可以直接用來ISP編程。
5 應(yīng)用實(shí)例
(1)應(yīng)用ATF1508AS進(jìn)行串并轉(zhuǎn)換
本系統(tǒng)應(yīng)用ATMEL公司的ATF1508AS進(jìn)行串行數(shù)據(jù)到并行數(shù)據(jù)的轉(zhuǎn)換,在進(jìn)行數(shù)據(jù)采集中,用到Crystal半導(dǎo)體公司生產(chǎn)的24位高精度Σ-△模/數(shù)轉(zhuǎn)換器CS5321/CS5322組件。該組件最終輸出字長為24位的2的補(bǔ)碼格式的串行數(shù)字信號(hào),將其轉(zhuǎn)換為并行數(shù)據(jù)可以方便與單片機(jī)的接口。串并轉(zhuǎn)換可采用移位寄存器來實(shí)現(xiàn)。對(duì)實(shí)現(xiàn)6通道24位采樣,若采用移位寄存器,則需要8位移位寄存器,共3&TImes;6=18片,另外還要用幾片譯碼器。這樣,會(huì)使芯片數(shù)量大增,占用大片電路板面積,使系統(tǒng)的體積增大。本系統(tǒng)使用ATF1508AS來實(shí)現(xiàn)6通道24位數(shù)據(jù)的串并轉(zhuǎn)換,可將大部分?jǐn)?shù)字邏輯設(shè)計(jì)(包括組合邏輯和時(shí)序邏輯)集成在一個(gè)芯片內(nèi),大幅減少芯片數(shù)量,減小系統(tǒng)體積。
由于ATF1508AS內(nèi)部有128個(gè)宏單元,而且24位串并轉(zhuǎn)換需要24個(gè)移位寄存器,因此不能同時(shí)進(jìn)行6通道的串并轉(zhuǎn)換,只能分時(shí)復(fù)用。本系統(tǒng)分3次進(jìn)行串并轉(zhuǎn)換,每次轉(zhuǎn)換2個(gè)通道,等待單片機(jī)讀取2個(gè)通道的并行數(shù)據(jù)后再進(jìn)行剩下的轉(zhuǎn)換。部分串并轉(zhuǎn)換VHDL程序如下(硬件描述語言是VHDL,軟件是ALTERA公司的MAXPLUSⅡ軟件和ATMEL公司的POF2JED軟件,下載軟件是ATMEL公司的ATMISP,下載電纜是ATMEL公司的專用電纜):
s2p : process(SCLK1M,DRDYIN,WORKING,RESET)
begin
if WORKING=‘1’ or RESET=‘1’ then
shift_enable 《= ‘0’;
state 《= s0;
elsif SCLK1M‘event and SCLK1M=’0‘ then
count1 《= count1+1;
case state is
when s0 =》if DRDYIN=’0‘ then
shift_enable 《= ’1‘;
count1 《= (others=》’0‘);
int_reg 《= ’1‘;
state 《= s1;
elsif READOK=’1‘ then
int_reg 《= ’1‘;
end if;
when s1=》shift_reg0《=shift_reg0(22 downto 0) SOD(0);
shift_reg1《=shift_reg1(22 downto 0) SOD(1);
if count1=23 then
shift_enable 《= ’0‘;
int_reg 《= ’0‘;
state 《= s2;
else
int_reg 《= ’1‘; end if;
when s2 =》 if shift_enable=’1‘ then
shift_reg0《=shift_reg0(22 downto 0) SOD(2);
shift_reg1《=shift_reg1(22 downto 0) SOD(3);
if count1=23 then
shift_enable 《= ’0‘;
int_reg 《= ’0‘;
state 《= s3;
else
int_reg 《= ’1‘; end if;
elsif READOK=’1‘ then
shift_enable 《= ’1‘;
count1 《= (others=》’0‘);
end if;
when s3 =》if shift_enable=’1‘ then
shift_reg0《=shift_reg0(22 downto 0) SOD(4);
shift_reg1《=shift_reg1(22 downto 0) SOD(5);
if count1=23 then
shift_enable 《= ’0‘;
int_reg 《= ’0‘;
state 《= s0;
else
int_reg 《= ’1‘; end if;
elsif READOK=’1‘ then
shift_enable 《= ’1‘;
count1 《= (others=》’0‘);
end if;
end case;
end if;
end process;
?。?)應(yīng)用ATF1508AS進(jìn)行高速USB通信
USB是近年來應(yīng)用在PC領(lǐng)域的新型接口技術(shù),具有使用方便、速度快、連接靈活、支持熱插拔等特點(diǎn)。USB1.1協(xié)議定義在高速下12 Mb/s、低速下1.5 Mb/s的傳輸速度。若要達(dá)到高速12 Mb/s(相當(dāng)于近1 MB/s)的速度,就要大約1μs傳輸1個(gè)字節(jié)。但由于USB的控制傳輸、錯(cuò)誤檢測以及單片機(jī)本身速度的限制,很難達(dá)到這么高的速度,因此,必須采用 DMA方式才能達(dá)到真正的高速傳輸,使用CPLD就可以實(shí)現(xiàn)類似DMA方式。單片機(jī)負(fù)責(zé)解釋USB的控制傳輸,當(dāng)要進(jìn)行從外存取數(shù)送到USB接口芯片時(shí),單片機(jī)讓出總線,由CPLD完成該工作。CPLD產(chǎn)生外存的讀取時(shí)序和地址、片選信號(hào),同時(shí)產(chǎn)生USB接口芯片的寫時(shí)序和地址、片選信號(hào),這樣就可以自動(dòng)實(shí)現(xiàn)外存數(shù)據(jù)到USB接口芯片的工作,而且速度很快,不需要單片機(jī)干預(yù)。以下給出RAM的讀取時(shí)序、地址信號(hào)和USB接口芯片寫時(shí)序的VHDL程序片斷:
rram1 : process(SCLK2M) -- RAM_OE(RAM讀時(shí)序)
begin
if SCLK2M’event and SCLK2M=‘1’ then
if read=‘0’ then
ram_oe_reg 《= ‘1’;
cpld2_counter 《= (others=》‘0’);
elsif read=‘1’ then
cpld2_counter 《= cpld2_counter+1;
if cpld2_counter》0 then
ram_oe_reg 《= not ram_oe_reg;
end if;
end if;
end if;
end process;
rram2 : process(SCLK2M,WORKING,RESET) -- ADDRESS(RAM地址信號(hào))
begin
if WORKING=‘1’ or RESET=‘1’ then
adr_reg 《= (others=》‘0’);
elsif SCLK2M‘event and SCLK2M=’0‘ then
if read=’1‘ and ram_oe_reg=’1‘ and cpld2_counter》2 then
adr_reg 《= adr_reg+1;
end if;
end if;
end process;
wd12 : process(SCLK2M) --USB芯片讀時(shí)序
begin
if SCLK2M’event and SCLK2M=‘0’ then
if read=‘0’ then
d12_wr_reg 《= ‘1’;
elsif read=‘1’ and cpld2_counter/=129 then
d12_wr_reg 《= not d12_wr_reg;
end if;
end if;
end process;
結(jié)束語
CPLD器件的優(yōu)勢在于縮短開發(fā)生產(chǎn)周期,現(xiàn)場靈活性好,而且隨著電子技術(shù)的發(fā)展,其集成度越來越高,速度越來越快,價(jià)格也逐漸降低,因此市場發(fā)展很快。ATMEL公司的ATF1508AS是高性能、高密度的復(fù)雜可編程邏輯器件,使用方便,具有很高的性價(jià)比,因此具有廣闊的應(yīng)用前景。
評(píng)論