欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4042|回復: 0
收起左側

FPGA設計開發入門教程

[復制鏈接]
ID:418565 發表于 2018-10-31 15:44 | 顯示全部樓層 |閱讀模式
FPGA入門教程,主要用于新手進行FPGA學習。
FPGA入門教程
1.數字電路設計入門
2FPGA簡介
3FPGA開發流程
4RTL設計
5QuartusⅡ設計實例
6. ModelSimTestbench1.
數字電路設計入門
1.1數字電路設計
數字電路設計的核心是邏輯設計。通常,數字電路的邏輯值只有‘1’和‘0’,表征的是模擬電壓或電流的離散值,一般‘1’代表高電平,‘0’代表低電平。
高低電平的含義可以理解為,存在一個判決電平,當信號的電壓值高于判決電平時,我們就認為該信號表征高電平,即為‘1’。反之亦然。
當前的數字電路中存在許多種電平標準,比較常見的有TTL、CMOS、LVTTL、LVCMOS、ECL、PECL、LVDS、HSTL、SSTL等。這些電平的詳細指標請見《補充教程1:電平標準》。
數字電路設計大致可分為組合邏輯電路和時序邏輯電路。
一般的數字設計的教材中對組合邏輯電路和時序邏輯電路的定義分別為:組合邏輯電路的輸出僅與當前的輸入有關,而時序邏輯電路的輸出不但與輸入有關,還和系統上一個狀態有關。
但是在設計中,我們一般以時鐘的存在與否來區分該電路的性質。由時鐘沿驅動工作的電路為時序邏輯電路。大家注意,這兩種電路并不是獨立存在的,他們相互交錯存在于整個電路系統的設計中。
1.1.1組合邏輯電路
組合邏輯電路由任意數目的邏輯門電路組成,一般包括與門、或門、非門、異或門、與非門、或非門等。一般的組合邏輯電路如下圖:
其中A,B,C,D,E,F為輸入,G為輸出。
1.1.2時序邏輯電路
時序邏輯電路由時鐘的上升沿或下降沿驅動工作,其實真正被時鐘沿驅動的是電路中的觸發器(Register),也稱為寄存器。觸發器的工作原理和參數如下圖:
下面是兩個簡單的時序邏輯電路例子:
(1)、時鐘分頻電路
該時序電路的功能為實現對時鐘’clk’的4分頻,其中’clk_2’為2分頻時鐘,’clk_4’為4分頻時鐘,’enable’為該電路的使能信號。其功能仿真波形如下圖所示:
(2)、序列檢測器
該時序電路實現了一個序列檢測器,當輸入序列‘datain’中出現‘101’時,標志位F將輸出‘1’,其他時刻輸出‘0’。電路中‘clk’為時鐘信號,‘D1’,‘D2’,‘D3’為移位寄存器的輸出,’enable’為該電路的使能信號。其功能仿真波形如下圖所示:
可見,時序電路設計的核心是時鐘和觸發器,這兩者也是我們設計電路時需重點關注的。
1.2毛刺的產生與消除
1.2.1競爭與冒險
當一個邏輯門的輸入有兩個或兩個以上的變量發生改變時,由于這些變量是經過不同路徑產生的,使得它們狀態改變的時刻有先有后,這種時差引起的現象稱為競爭(Race)。競爭的結果將很可能導致冒險(Hazard)發生(例如產生毛刺),造成錯誤的后果,并影響系統的工作。
組合邏輯電路的冒險僅在信號狀態改變的時刻出現毛刺,這種冒險是過渡性的,它不會使穩態值偏離正常值,但在時序電路中,冒險是本質的,可導致電路的輸出值永遠偏離正常值或者發生振蕩。
避免冒險的最簡單的方法是同一時刻只允許單個輸入變量發生變化,或者使用寄存器采樣的辦法。
1.2.2毛刺的產生與危害
信號在FPGA器件中通過邏輯單元連線時,一定存在延時。延時的大小不僅和連線的長短和邏輯單元的數目有關,而且也和器件的制造工藝、工作環境等有關。因此,信號在器件中傳輸的時候,所需要的時間是不能精確估計的,當多路信號同時發生跳變的瞬間,就產生了“競爭冒險”。這時,往往會出現一些不正確的尖峰信號,這些尖峰信號就是“毛刺”。
讓我們來具體看一下毛刺是如何產生的。下圖是一個與門電路,
我們期望的設計是,a和b信號同時變化,這樣輸出OUT將一直為0,但是實際中OUT產生了毛刺,它的仿真波形如下所示:
可見,即使是在最簡單的邏輯運算中,如果出現多路信號同時跳變的情況,在通過內部走線之后,就一定會產生毛刺。而現在數字電路設計中的信號往往是由時鐘控制的,如果將帶有毛刺的輸出信號直接連接到時鐘輸入端、清零或置位端口的設計,可能會導致嚴重的后果;此外對于多數據輸入的復雜運算系統,每個數據都由相當多的位數組成。這時,每一級的毛刺都會對結果有嚴重的影響,如果是多級的設計,那么毛刺累加后甚至會影響整個設計的可靠性和精確性。 判斷一個邏輯電路在某些輸入信號發生變化時是否會產生毛刺,首先要判斷信號是否會同時變化,然后判斷在信號同時變化的時候,是否會產生毛刺,這可以通過邏輯函數的卡諾圖或邏輯函數表達式來進行判斷。
1.2.3毛刺的消除
毛刺是數字電路設計中的棘手問題,它的出現會影響電路工作的穩定性、可靠性,嚴重時會導致整個數字系統的誤動作和邏輯紊亂。
可以通過以下幾種方法來消除毛刺: 1、輸出加D觸發器 這是一種比較傳統的去除毛刺的方法。原理就是用一個D觸發器去讀帶毛刺的信號,利用D觸發器對輸入信號的毛刺不敏感的特點,去除信號中的毛刺。在實際中,對于簡單的邏輯電路,尤其是對信號中發生在非時鐘跳變沿的毛刺信號,去除效果非常的明顯。但是如果毛刺信號發生在時鐘信號的跳變沿,D觸發器的效果就沒有那么明顯了(加D觸發器以后的輸出q,仍含有毛刺)。另外,D觸發器的使用還會給系統帶來一定的延時,特別是在系統級數較多的情況下,延時也將變大,因此在使用D觸發器去除毛刺的時候,一定要視情況而定,并不是所有的毛刺都可以用D觸發器來消除。 2、信號同步法 設計數字電路的時候采用同步電路可以大大減少毛刺。由于大多數毛刺都比較短(大概幾個納秒),只要毛刺不出現在時鐘跳變沿,毛刺信號就不會對系統造成危害了。因此一般認為,只要在整個系統中使用同一個時鐘就可以實現系統同步。但是,時鐘信號在FPGA器件中傳遞時是有延時的,我們無法預知時鐘跳變沿的精確位置。也就是說我們無法保證在某個時鐘的跳變沿讀取的數據是一個穩定的數據,尤其是在多級設計中,這個問題就更加突出。因此,做到真正的"同步"就是去除毛刺信號的關鍵問題。所以同步的關鍵就是保證在時鐘的跳變沿讀取的數據是穩定的數據而不是毛刺數據。以下為兩種具體的信號同步方法。 (1)信號延時同步法 信號延時法,它的原理就是在兩級信號傳遞的過程中加一個延時環節,從而保證在下一個模塊中讀取到的數據是穩定后的數據,即不包含毛刺信號。這里所指的信號延時可以是數據信號的延時,也可以是時鐘信號的延時。 (2)狀態機控制 使用狀態機也可以實現信號的同步和消除毛刺的目的。在數據傳遞比較復雜的多模塊系統中,由狀態機在特定的時刻分別發出控制特定模塊的時鐘信號或者模塊使能信號,狀態機的循環控制就可以使得整個系統協調運作,同時減少毛刺信號。那么只要我們在狀態機的觸發時間上加以處理,就可以避免競爭冒險,從而抑制毛刺的產生。
3、格雷碼計數器
對于一般的二進制或十進制計數器,在計數時,將有多位信號同時跳變。例如一個3bit二進制計數器,由’111’轉換為’000’時,必將產生毛刺。此時,使用格雷碼計數器將避免毛
刺的出現,因為格雷碼計數器的輸出每次只有一位跳變。
其他關于毛刺的詳細討論,請見補充教程2:關于毛刺問題的探討。
1.3同步電路設計
同步電路是指所有電路在同一個公共時鐘的上升沿或下降沿的觸發下同步地工作。但在實際系統中,往往存在多時鐘域的情況,這時同步的概念有所延伸,不再專指整個設計同步于同一時鐘沿,而是指設計應該做到局部同步,在每個時鐘域內的電路要同步于同一時鐘沿。
1.3.1同步電路設計的優點:
1.同步設計能有效地避免毛刺的影響,使得設計更可靠;
2.同步設計易于添加異步復位reset,以使整個電路有一個確定的初始狀態;
3.同步設計可以減小環境對芯片的影響,避免器件受溫度,電壓,工藝的影響;
4.同步設計可以使靜態時序分析變得簡單和可靠;
5.同步設計可以很容易地組織流水線,提高芯片的運行速度。
1.3.2同步電路的設計準則:
1.盡可能在設計中使用同一時鐘,時鐘走全局時鐘網絡。走全局時鐘網絡的時鐘是最簡單、最可預測的時鐘,它具有很強的驅動能力,可以驅動FPGA內部中的所有觸發器,并保證Clock skew可以小到忽略的地步。
2.避免使用混合時鐘沿采樣數據,即避免在設計中中同時使用時鐘的上升沿和下降沿。
3.盡量少在模塊內部使用計數器分頻所產生的時鐘。計數器分頻時鐘需完成的邏輯功能完全可由PLL鎖相環或時鐘使能電路替代。計數器分頻時鐘的缺點是使得系統內時鐘不可控,并產生較大的Clock skew,還使靜態時序分析變得復雜。
4.避免使用門控時鐘。因為經組合邏輯產生的門控時鐘極可能產生毛刺,使D觸發器誤動作。
5.當整個電路需要多個時鐘來實現,則可以將整個電路分成若干局部同步電路(盡量以同一個時鐘為一個模塊),局部同步電路之間接口當作異步接口考慮,而且每個時鐘信號的時鐘偏差(△T)要嚴格控制。
6.電路的實際最高工作頻率不應大于理論最高工作頻率,留有設計余量,保證芯片可靠工作。
7.電路中所有寄存器、狀態機在系統被reset復位時應處在一個已知的狀態。
關于同步電路設計中的其他問題請詳見補充教程3:華為同步電路設計規范。
1.3.3關于時鐘設計的討論
目前的工程設計中一般使用同步時序電路來完成整個系統的設計,由上一節可見,時鐘在同步電路設計中起著至關重要的作用。那么,我們在設計時首先要完成的是對時鐘的設計。
如今在設計中常見的時鐘類型包括: 全局時鐘、內部邏輯時鐘和門控時鐘。
1. 全局時鐘
全局時鐘即同步時鐘,它通過FPGA芯片內的全局時鐘布線網絡或區域時鐘網絡來驅動,全局時鐘具有高扇出、高精度、低Jitter和低Skew的特點,它到芯片中的每一個寄存器的延遲最短,且該延遲可被認為是固定值。所以我們推薦在所有的設計中的時鐘都使用全局時鐘。全局時鐘的設計有以下幾種方法:

(1). 由PLL鎖相環來產生全局時鐘。
(2). 將FPGA芯片內部邏輯產生的時鐘分配至全局時鐘布線網絡。
(3). 將外部時鐘通過專用的全局時鐘輸入引腳引入FPGA。
在我們的設計中,一般推薦電路中的所有的時鐘都由PLL鎖相環產生。一方面,PLL鎖相環可實現倍頻和移相的操作,使我們很方便地獲得所需頻率和相位的時鐘;另一方面,PLL鎖相環默認將其驅動的時鐘分配至全局時鐘網絡或區域時鐘網絡,Jitter和Skew都很小。
下圖取自我們項目中的一個PLL鎖相環設計,該PLL用于驅動DDR的接口模塊。因為功能所需,DDR接口需要三個133MHz的時鐘,相位分別是‘-90’、‘0’、‘-180’,圖中所示即為該時鐘的產生模塊。我們使用QuartusⅡ的Megawizard生成PLL鎖相環的IP core。其中‘inclk_66’為PLL鎖相環的輸入時鐘,由外部的66MHz晶振提供,經過PLL倍頻和移相后得到所需的三個全局時鐘。 ooo

2. 內部邏輯時鐘
內部邏輯時鐘即指由芯片內部的組合邏輯或計數器分頻產生的時鐘。
對于組合邏輯時鐘,特別是由多級組合邏輯產生的時鐘,是要被嚴格禁止使用的,因為一方面組合邏輯極容易產生毛刺,特別是對多級組合邏輯;另一方面組合邏輯電路的Jitter和Skew比較大,這將惡化時鐘的質量。所以,一般組合邏輯產生的內部時鐘僅僅適用于時鐘頻率較低、時鐘精度要求不高的情況。
對于計數器分頻產生的時鐘,也應該盡量少地使用,因為這種時鐘會帶來比較大的延遲,降低設計的可靠性,也使得靜態時序分析變得復雜。計數器分頻時鐘需完成的邏輯功能完全可由PLL鎖相環或時鐘使能電路替代。
還有一種由觸發器產生的時鐘—行波時鐘,即一個觸發器的輸出用作另一個觸發器的時鐘輸入。文中1.1.2節描述的時鐘分頻電路就是一種行波時鐘。因為各觸發器的時鐘之間產生較大的時間偏移,很容易就會違反建立時間、保持時間的要求,導致亞穩態的發生。所以,這種行波時鐘要被嚴格禁止使用。
3. 門控時鐘
一般情況下,應該避免使用門控時鐘。因為經組合邏輯產生的門控時鐘極可能產生毛刺,對系統造成很大危害。但對于某些功耗很大的系統而言,需要使用門控時鐘來降低功耗。
我們推薦使用右圖中描述的門控時鐘的設計,該設計一般不會產生毛刺和亞穩態的問題。因為觸發器避免了毛刺的產生,而亞穩態只可能出現在源時鐘的下降沿,但是隨后它與源時鐘低相位相與,最后不會產生影響。
門控時鐘最好只在頂層模塊中出現,并將其分離到一個在頂層的獨立模塊中。這同時保證了底層的每個模塊有單一的時鐘,且在本模塊中的時鐘不進行門控。
在補充教程4和補充教程5中,我們對時鐘和時序的設計進行了更詳細的討論。 Dsource_clkclk_engated_clkqoutsource_clkclk_enqoutgated_clk
1.3.4亞穩態在同步電路或異步電路中,如果觸發器的setup 時間或hold 時間不能得到滿足,就可能產生亞穩態,此時觸發器輸出端Q在有效時鐘沿之后比較長的一段時間處于不確定的狀態,在這段時間里Q端將會產生毛刺并不斷振蕩、最終固定在某一電壓值上,此電壓值并不一定等于原來數據輸入端D的值。這段時間稱為決斷時間(resolution time)。經過決斷時間之后,Q端將穩定到0或1上,但是究竟是0還是1,這是隨機的,與輸入沒有必然的關系。
亞穩態的危害主要體現在破壞系統得穩定性上,由于輸出在穩定下來之前可能是毛刺、振蕩、固定的某一電壓值,因此亞穩態除了導致邏輯誤判之外,嚴重情況下輸出0~1之間的中間電壓值還會使下一級產生亞穩態(即導致亞穩態的傳播)。邏輯誤判將導致功能性錯誤,而亞穩態的傳播則擴大了故障面,嚴重時將導致系統崩潰。
在異步時序電路中更容易發生亞穩態,因為異步電路一般具有多個時鐘域,數據在兩個時鐘域間傳遞時,非常容易導致setup 時間或hold 時間不滿足而發生亞穩態。在同步時序電路中,當兩個觸發器間的組合邏輯延遲過大時,會導致setup 時間不滿足而發生亞穩態。
1.3.5對跨時鐘域數據的處理
對跨時鐘域數據的處理的核心就是要保證下級時鐘對上級數據采樣的setup 時間或hold 時間滿足要求,即盡量避免亞穩態的發生和傳播。但是,我們知道,只要系統中有異步元件,亞穩態就是無法避免的,因此設計的電路首先要減少亞穩態導致錯誤的發生,其次要使系統對產生的錯誤不敏感。我們推薦使用以下方法來解決異步時鐘域數據同步問題。
1. 用觸發器打兩拍
如下圖,左邊為異步輸入端,經過兩級觸發器同步,在右邊的輸出將是同步的,而且該輸出基本不存在亞穩態。其原理是即使第一個觸發器的輸出端存在亞穩態,經過一個CLK周期后,第二個觸發器D端的電平仍未穩定的概率非常小,因此第二個觸發器Q端基本不會產生亞穩態。然而,亞穩態是無法被根除的,一旦亞穩態發生,后果的嚴重程度依賴于你



設計系統對產生的錯誤是否敏感。
2. 異步FIFO或DPRAM
因為異步FIFO或DPRAM使用格雷碼計數器設計讀寫地址的指針,所以它可以很好地避免亞穩態的發生。使用方法如下,將上級芯片提供的數據隨路時鐘作為寫信號,將數據寫入異步FIFO或DPRAM,然后使用本級的采樣時鐘將數據讀出即可。唯一需要注意的是,當兩級時鐘頻率不同時,需要設計好緩沖區,并通過監控full、half、empty、useword

是,當兩級時鐘頻率不同時,需要設計好緩沖區,并通過監控full、half、empty、useword3. 調整時鐘相位
這種方法的設計難度較大,

FPGA是Field Program芯片(集成電路芯片),
通常FPGA由布線資源分隔
列構成整個芯片,目前我們使用的
片的邏輯單元(
可能的結果,然后把結果事先寫入查找表中,FPGA工作時,輸入信號所進行的邏輯運算就查找表(Look-Up-Table)簡稱為LUT,其本質上就是一個靜態存儲器SRAM。 對于下
實際邏輯電路 LUT的實現方式 ....
0
...
0
1111
1
1111
1
3.1 需求定義(功能定義) 設計和實現一個系統的第一步,是明確整個系統的性能指標,然后進一步將系統功能劃 分為可實現的具體功能模塊,同時明確各模塊的功能與基本時序,還可大致確定模塊間的接 口,如時鐘、讀寫信號、數據流和控制信號等。 3.2 RTL HDL 描述 RTL 級(寄存器傳輸級)指不關注寄存器和組合邏輯的細節(如使用了多少邏輯門、邏 輯門的連接拓撲結構等),通過描述寄存器到寄存器之間的邏輯功能的 HDL 設計方法。RTL 級比門級更抽象,同時也更簡單和高效。RTL 級的最大特點是可以直接用綜合工具將其綜 合為門級網表。RTL 級設計直接決定著系統的功能和效率。我們使用的 HDL 語言是 verilog。 3.3 功能仿真(前仿真) 功能仿真也稱綜合前仿真,其目的是驗證 RTL 級描述是否與設計意圖一致。為了提高效 率,功能仿真需要建立testbench,其測試激勵一般使用行為級 HDL 語言描述。 3.4 管腳分配與設計約束 無論是 RTL 級還是門級的 HDL 設計方法,在實現該邏輯時都需要與實際的 FPGA 芯片 相匹配。管腳分配是指將設計文件的輸入輸出信號指定到器件的某個管腳,設置此管腳的電 平標準、電流強度等。設計約束指對設計的時序約束和在綜合、布局布線階段附加的約束等。 3.5 綜合 將 RTL 級 HDL 語言翻譯成由與、或、非門等基本邏輯單元組成的門級連接(網表),并 根據設計目標與要求(約束條件)優化所生成的邏輯連接,輸出門級網表文件。 3.6 門級仿真(綜合后仿真) 在綜合后通過后仿真來檢查綜合結果是否與原設計一致。一般,綜合后仿真和功能仿真 的測試激勵相同。由于綜合工具日益完善,在目前的 FPGA 設計中,這一步驟被省略掉。 3.7 布局布線 配。也可以簡單地將布局布線理解為對 FPGA 內部查找表和寄存器資源的合理配置,那么‘布 布局布線就是使用綜合后的網表文件,將工程的邏輯與時序要求與器件的可用資源相匹
局’ 可以被理解挑選可實現設計
資源以最優方式連接起來。 3.8時序/時延分析布線延時。時序/時延分析的時序仿真是最準確的,能較好地反映芯片的實際工作情況,同
時發現時序違規(Timing Vio
時間、保持時間)的情況。3.9配置與下載
通過編程器(programmer)將布
程。文件格JTAG
4.2. ,我們舉幾個例子來說明這個問題: 的延遲語句(如:#delay)、 ,他們所描述的功能對硬件而言是不 。比如,實現兩個變量相除運算的代碼:c<=A/B; 我們將發現這句代碼只能在前仿真中正確執行,在 QuartusⅡ和其他 EDA 軟件中都不 能將其綜合成硬件。 除、求余、移位。試除和求余需要減法器,商數和余數的中間結果必須有寄存器存儲;而這 些運算顯然不能在一 完成,它需要一個狀態機來控制時序,經過多個時鐘周期才 能得出結果。 次描述的 EDA (注:有些 FPGA 的配套軟件提供乘除法的運算模塊, 但也只能支持直接調用,不支持把形如 C=A/B 的語句綜合成除法模塊)。 3.對于不定次數的循環運算是不可綜合的,比如對于如下的代碼段: 是有限的、固定的。當綜合軟件遇到循環語句時,總是將其展開成若干條順序執行的語句, 是常數,則展開的語句數是確定的,具有可綜合性;而 對應的硬件電路數量也不能確定,無法被綜合。這樣 的語句還包括 while,repeat,forever 等,他們都不可綜合。 通常 EDA 軟件對 HDL 代碼的綜合能力總是比人的思維差。也就是說,對于一段代碼, 那 EDA 軟件肯定也不行。比如說,加法器、 ,所以類似 A+B-C,(A>B)?C:D 這樣的運算一定可以綜合。 實 僅符合語法的HDL代碼。
1哪些是不可綜合的代碼
我們不可能將所有不可綜合的代碼都一一列出
1.對于一些抽象的行為描述代碼是不可綜合的。比如我們常見
初始化語句initial以及等待語句wait都是不可綜合的
可實現的。
2.對于一些抽象的運算代碼也是不可綜合的
always @(posedge clk)
試想一下,如果我們自己用筆算除法是怎么做的?從高位到低位逐次試
個時鐘延上
一句簡單的C=A/B同所有這些相比顯得太抽象,對于只能接受RTL或更低層
軟件來說確實太難實現。
for (i=0; i<wordlength ; i=i+1)
parity = parity xor data[ i];
當wordlength為變量時,任何EDA軟件都不能綜合這個代碼。這是因為硬件規模必須
然后再綜合成電路。若wordlength
若它是變量時,展開的語句數不確定,4.2.2如何判斷自己寫的代碼是可綜合的如果你不能想象出一個較直觀的硬件實現方法,多路選擇器是大家都很熟悉的電路
而除法、開根、對數等等較復雜的運算,必須通過一定的算法實現,沒有直觀簡單的現方法,則可以判斷那些計算式是不能綜合的,必須按它們的算法寫出更具體的代碼才能實現。此外,硬件無法支持的抽象行為描述,當然也不能被綜合。不過,這樣的判斷標準非常主觀模糊,
要一個相對客觀的標準,一般來說:在RTL級的描述中,所有邏輯運算和加減法運算、
然有缺陷,所以,正確的判斷仍然要靠實踐來積累經驗。當你可以較準確判斷代碼的可綜合性的時候,你對HDL的掌握就算完全入門了。優化RTL代碼追求的最終目標是面積或者速度,或者是兩者的平衡。面積和速度是FPGA設計的兩個基本標準。“面積”是指一個設計所消耗FPGA的邏輯資源數量,“速度”指設計在芯片上穩定運行所能夠達到的最高頻率。兩者是對立統一的,即要
面積最小、速度最高時不現實的。我們的設計目標應該是在滿足設計時序
更高。4.3.1 Pipelining技術器位置,用寄存器合理分割該組合邏輯路徑,從而降低路徑
具體實現可通過下圖的方法,首先對時延較大
時延較大的組合邏輯a_rega_pipe a_int a_reg a_pipe a_int z_reg HDL描述的結構寄存器,然后運用優化工具自動將大組合邏輯拆分為幾個小的組合邏輯,同時將寄存器放在小組合邏輯在中間。


完整的Word格式文檔51黑下載地址:
FPGA入門教程.doc (158 KB, 下載次數: 28)



回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表