❶ 與單片機相比,FPGA的優勢在哪裡
1,FPGA運行速度快
FPGA內部集成鎖項環,可以把外部時鍾倍頻,核心頻率可以到幾百M,而單片機運行速度低的多.在高速場合,單片機無法代替FPGA
2,FPGA管腳多,容易實現大規模系統
單片機IO口有限,而FPGA動輒數百IO,可以方便連接外設.比如一個系統有多路AD,DA,單片機要進行仔細的資源分配,匯流排隔離,而FPGA由於豐富的IO資源,可以很容易用不同IO連接各外設
3,FPGA內部程序並行運行,有處理更復雜功能的能力
單片機程序是串列執行的,執行完一條才能執行下一條,在處理突發事件時只能調用有限的中斷資源;而FPGA不同邏輯可以並行執行,可以同時處理不同任務,這就導致了FPGA工作更有效率
4,FPGA有大量軟核,可以方便進行二次開發
FPGA甚至包含單片機和DSP軟核,並且IO數僅受FPGA自身IO限制,所以,FPGA又是單片機和DSP的超集,也就是說,單片機和DSP能實現的功能,FPGA一般都能實現
❷ 請問FPGA是如何與單片機通訊的
1 前言
現場可編程邏輯器件(FPGA)在高速採集系統中的應用越來越廣,由於FPGA
對採集到的數據的處理能力比較差,故需要將其採集到的數據送到其他CPU 系統
來實現數據的處理功能,這就使FPGA 系統與其他CPU 系統之間的數據通信提到
日程上,得到人們的急切關注。本文介紹利用VHDL 語言實現 FPGA 與單片機
的串口非同步通信電路。
整個設計採用模塊化的設計思想,可分為四個模塊:FPGA 數據發送模塊,
FPGA 波特率發生控制模塊,FPGA 總體介面模塊以及單片機數據接收模塊。本
文著重對FPGA 數據發送模塊實現進行說明。
2 FPGA 數據發送模塊的設計
根據RS232 非同步串列通信來的幀格式,在FPGA 發送模塊中採用的每一幀
格式為:1 位開始位+8 位數據位+1 位奇校驗位+1 位停止位,波特率為2400。本
系統設計的是將一個16 位的數據封裝成高位幀和低位幀兩個幀進行發送,先發
送低位幀, 再發送高位幀, 在傳輸數據時, 加上文件頭和數據長度, 文件頭用
555555 來表示,只有單片機收到555555 時,才將下面傳輸的數據長度和數據位
進行接收,並進行奇校驗位的檢驗,正確就對收到的數據進行存儲處理功能,數
據長度可以根據需要任意改變。由設置的波特率可以算出分頻系數,具體演算法為
分頻系數X=CLK/(BOUND*2)。可由此式算出所需的任意波特率。下面是實現上
述功能的VHDL 源程序。
Library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity atel2_bin is
port( txclk: in std_logic; --2400Hz 的波特率時鍾
reset: in std_logic; --復位信號
din: in std_logic_vector(15 downto 0); --發送的數據
start: in std_logic; --允許傳輸信號
sout: out std_logic --串列輸出埠
);
end atel2_bin;
architecture behav of atel2_bin is
signal thr,len: std_logic_vector(15 downto 0);
signal txcnt_r: std_logic_vector(2 downto 0);
signal sout1: std_logic;
signal cou: integer:=0;
signal oddb:std_logic;
type s is(start1,start2,shift1,shift2,odd1,odd2,stop1,stop2);
signal state:s:=start1;
begin
process(txclk)
begin
if rising_edge(txclk) then
if cou<3 then thr<="0000000001010101"; --發送的文件頭
elsif cou=3 then
thr<="0000000000000010"; --發送的文件長度
elsif (cou>3 and state=stop2) then thr<=din;--發送的數據
end if;
end if;
end process;
process(reset,txclk)
variable tsr,tsr1,oddb1,oddb2: std_logic_vector(7 downto 0);
begin
if reset='1' then
txcnt_r<=(others=>'0');
sout1<='1';
state<=start1;
cou<=0;
elsif txclk'event and txclk='1' then
case state is
when start1=>
if start='1' then
if cou=3 then
len<=thr;
end if;
tsr:=thr(7 downto 0);
oddb1:=thr(7 downto 0);
sout1<='0'; --起始位
txcnt_r<=(others=>'0');
state<=shift1;
else
state<=start1;
end if;
when shift1=>
oddb<=oddb1(7) xor oddb1(6) xor oddb1(5) xor oddb1(4) xor
oddb1(3) xor oddb1(2) xor oddb1(1) xor oddb1(0);
sout1<=tsr(0); --數據位
tsr(6 downto 0):=tsr(7 downto 1);
tsr(7):='0';
txcnt_r<=txcnt_r+1;
if (txcnt_r=7) then
state<=odd1;cou<=cou+1;
end if;
when odd1=> --奇校驗位
if oddb='1' then
sout1<='0';state<=stop1;
else
sout1<='1';state<=stop1;
end if;
when stop1=>
sout1<='1'; --停止位
if cou<4 then
state<=start1;
else
state<=start2;
end if;
when start2=>
tsr1:=thr(15 downto 8);
oddb2:=thr(15 downto 8);
sout1<='0'; --起始位
txcnt_r<=(others=>'0');
state<=shift2;
when shift2=>
oddb<=oddb2(7) xor oddb2(6) xor oddb2(5) xor oddb2(4) xor
oddb2(3) xor oddb2(2) xor oddb2(1) xor oddb2(0);
sout1<=tsr1(0);--數據位
tsr1(6 downto 0):=tsr1(7 downto 1);
tsr1(7):='0';
txcnt_r<=txcnt_r+1;
if (txcnt_r=7) then
state<=odd2;
end if;
when odd2=> --奇校驗位
if oddb='1' then
sout1<='0';state<=stop2;
else
sout1<='1';state<=stop2;
end if;
when stop2=>
sout1<='1'; --停止位
if len="0000000000000000" then
state<=stop2;
else
state<=start1;
len<=len-1;
end if;
end case;
end if;
end process;
sout<=sout1;
end behav;
其中各信號的說明已在程序中標明了。波形模擬圖如圖2 所示。
圖2 FPGA 數據發送時序模擬圖
圖中Din 寫入值為3355H,波特率為2400Hz,Start 信號始終置邏輯1,即隨時都
能發送數據。Reset 信號邏輯1 時復位,邏輯0 時電路開始工作。THR 是數據寄
存器,文件頭、數據長度以及數據位都先寄存到THR 中,Len 是數據長度,TSR
是低8 位數據幀寄存器,TSR1 是高8 位數據幀寄存器。數據長度Len 定為02H,
發送時先發送低8 位55H,後發送高8 位33H,一共發送兩遍。發送的數據格式
說明: 當發送55H 時, 其二進制為01010101, 則發送的數據的二進制數為
00101010111( 1 位開始位+8 位數據位+1 位奇校驗位+1 位停止位)。
單片機部分先對FPGA 發送過來的文件頭進行確認,正確就接收文件,否則
放棄接收的數據。根據FPGA 發送模塊的協議,對串口控制寄存器SCON 和波特
率控制寄存器PCON 的設置即可實現。
流程圖發不上來,沒有空間,要的話 留個郵箱給我!
❸ 怎樣把FPGA當做單片機用
如果是簡單邏輯功能能,FPGA會比單片機好的多,但要是涉及到數據的處理,那用FPGA就不一定夠用了。比如做一個除法,對單片機而言很容易,但是對於FPGA呢?
❹ fpga與單片機,嵌入式的區別,感謝
一、主體不同
1、fpga:是在PAL、GAL等可編程器件的基礎上進一步發展的產物。
2、單片機:是一種集成電路晶元,是採用超大規模集成電路技術製成。
3、嵌入式:用於控制、監視或者輔助操作機器和設備的裝置。
二、作用不同
1、fpga:是作為專用集成電路(ASIC)領域中的一種半定製電路而出現的,既解決了定製電路的不足,又克服了原有可編程器件門電路數有限的缺點。
2、單片機:不是完成某一個邏輯功能的晶元,而是把一個計算機系統集成到一個晶元上。相當於一個微型的計算機,和計算機相比,單片機只缺少了I/O設備。
3、嵌入式:以計算機技術為基礎,軟硬體可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統。
三、構成不同
1、fpga:採用了邏輯單元陣列LCA這樣一個概念,內部包括可配置邏輯模塊CLB、輸入輸出模塊IOB和內部連線三個部分。
2、單片機:把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能集成到一塊矽片上。
3、嵌入式:是一個控製程序存儲在ROM中的嵌入式處理器控制板。
❺ 為什麼我覺得單片機開發比FPGA開發要難
當你熟悉單片機後,就會覺得單片機開發是比較容易的,如果你跨入這一行成為老司機後,你就會覺得,要做好一個東西,FPGA開發要難於單片機。
❻ 目前 單片機與cpld和fpga 哪個發展的更好
單片機是不是漸漸隱退?不會。除非fpga也能降到15人民幣一下的。
發展前途我不敢斷言。只能給你說出單片機。cpld和fpga的區別和各項優勢。
單片機:控制能力強。時序實現能力弱,組合邏輯能力較強。
CPLD:控制能力較強,組合邏輯能力強。時序實現能力弱。
FPGA:控制能力較弱,組合邏輯能力較強,時序實現能力強。
總體來說。fpga和cpld在頻率范圍和邏輯實現方面要高出單片機一塊。但是由於沒有指令系統。所以控制能力比較弱。
假象一下。單片機碰到50Mhz以上的時鍾基本就不能工作了。
但是讓你為fpga做一套32位的指令系統並廣泛運用~其實難度不亞於讓單片機工作在100兆晶振下面。
主要看你喜歡什麼了~
❼ FPGA、單片機的區別是什麼
一、性質不同
1、FPGA(Field Programmable Gate Array)是在PAL、GAL等可編程器件的基礎上進一步發展的產物。它是作為專用集成電路(ASIC)領域中的一種半定製電路而出現的,既解決了定製電路的不足,又克服了原有可編程器件門電路數有限的缺點。
2、單片機(Single-Chip Microcomputer)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、
定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。
二、優點不同
1、FPGA
(1) FPGA由邏輯單元、RAM、乘法器等硬體資源組成,通過將這些硬體資源合理組織,可實現乘法器、寄存器、地址發生器等硬體電路。
(2)FPGA可通過使用框圖或者Verilog HDL來設計,從簡單的門電路到FIR或者FFT電路。
(3)FPGA可無限地重新編程,載入一個新的設計方案只需幾百毫秒,利用重配置可以減少硬體的開銷。
(4)FPGA的工作頻率由FPGA晶元以及設計決定,可以通過修改設計或者更換更快的晶元來達到某些苛刻的要求(當然,工作頻率也不是無限制的可以提高,而是受當前的IC工藝等因素制約)。
2、單片機
(1)擁有良好的集成度;
(2)單片機自身體積較小;
(3)單片機擁有強大的控制功能,同時運行電壓比較低;
(4)單片機擁有簡易攜帶等優勢,同時性價比較高。
(7)fpga單片機擴展閱讀
單片機的特點可歸納為以下幾個方面:集成度高;存儲容量大;外部擴展能力強;控制功能強。
1、從內部的硬體到軟體有一套完整的按位操作系統,稱作位處理器,處理對象不是字或位元組而是位。不但能對片內某些特殊功能寄存器的某位進行處理,如傳送、置位、清零、測試等,還能進行位的邏輯運算,其功能十分完備,使用起來得心應手。
2、同時在片內RAM區間還特別開辟了一個雙重功能的地址區間,使用極為靈活,這一功能無疑給使用者提供了極大的方便。
3、乘法和除法指令,這給編程也帶來了便利。很多的八位單片機都不具備乘法功能,作乘法時還得編上一段子程序調用,十分不便。