亚洲国产高清在线观看视频_日韩欧美国产aⅴ另类_奇米影视7777久久精品_欧美 国产 亚洲 卡通 综合

您的位置:首頁 > 熱點(diǎn) >

FPGA開發(fā)板快速教程(一)

前言FPGA在復(fù)雜邏輯電路以及數(shù)字信號處理領(lǐng)域中扮演者越來越重要的角色,SOC(片上系統(tǒng))以其低功耗,高性能,低成本,高可靠性等優(yōu)點(diǎn)成為嵌入式系統(tǒng)的發(fā)展趨勢。作為一個簡明的教程,主要宗旨是讓初學(xué)者快速地了解FPGA/SOPC(可編程片上系統(tǒng))開發(fā)的流程。目前IT技術(shù)的發(fā)展可以說是一日千里,以本人的觀點(diǎn)來講,如果希望在電子設(shè)計(jì)領(lǐng)域有所作為,則必須具備快速掌握新技術(shù)的能力。電子設(shè)計(jì)最重要的是實(shí)踐的積累,我們只要具備了一定的基礎(chǔ),應(yīng)當(dāng)馬上投入實(shí)踐,否則很多概念都無法真正理解。有不少人包括我,當(dāng)下決心要成為一個合格的電子設(shè)計(jì)工程師的時候,總是想如果把有關(guān)電路方面的理論都掌握了才能所向披靡,有底氣參加實(shí)際項(xiàng)目設(shè)計(jì)。當(dāng)然如果能做到“把有關(guān)理論都掌握了”這樣的境界,我想應(yīng)該是很理想的,但經(jīng)驗(yàn)發(fā)現(xiàn)這并不實(shí)際。據(jù)我所知,我所認(rèn)識的不少電子設(shè)計(jì)牛人,他們的理論知識可能都比不上我們的本科生,但很多不錯的產(chǎn)品都是從他們的手中開發(fā)出來的,有了實(shí)踐的經(jīng)驗(yàn)后,他們掌握新技術(shù)的速度相當(dāng)驚人。有人跟我說:“新技術(shù)是拿來用的,不是拿來學(xué)的。”他們認(rèn)為掌握新的設(shè)計(jì)技術(shù)應(yīng)當(dāng)盡快掌握它的設(shè)計(jì)流程。因此,我參考朋友給我的意見,寫了這個簡易的教程,以非常詳細(xì)的實(shí)例來讓初學(xué)者了解基于QuartusII和NiosII IDE的FPGA/SOPC開發(fā)的基本流程,目的是為了讓初學(xué)者盡快上手FPGA/SOPC的開發(fā)流程,盡快投入到實(shí)踐中。為了易于說明問題,本教程中的一些概念并不是很嚴(yán)謹(jǐn),如果讀者對某些提法有異議,請參考相關(guān)資料和教材,并以相關(guān)資料和教材為準(zhǔn)。通過該簡明教程,初學(xué)者能快速了解FPGA/SOPC的基本開發(fā)流程,很多技巧和深入理解都靠長期的經(jīng)驗(yàn)積累,因此初學(xué)者應(yīng)該在了解了基本流程以后,思維不能局限于此,應(yīng)在實(shí)踐中提高水平,并參考更全面和權(quán)威的資料。 本教程配套CT-SOPCx系列FPGA/SOPC開發(fā)學(xué)習(xí)板套件(對于該套件的相關(guān)內(nèi)容請參考附錄。)以實(shí)踐為基礎(chǔ),適合具備基本的數(shù)字電路設(shè)計(jì)基礎(chǔ)的初學(xué)者。第一章是CPLD/FPGA的基本知識,這部分內(nèi)容摘自互聯(lián)網(wǎng)并稍加刪改,對于CPLD/FPGA知識為零的初學(xué)者應(yīng)先了解這部分內(nèi)容;對于已經(jīng)有了一定基礎(chǔ)的同學(xué)可以跳過這部分內(nèi)容。第二章以兩個例子來讓初學(xué)者了解FPGA的基本開發(fā)流程,并熟悉QuartusII軟件的使用。第三章以一個例子來讓初學(xué)者了解基于NiosII軟CPU核的SOPC設(shè)計(jì)流程,并熟識SOPC Builder和NiosII IDE的基本使用。附錄是本文所涉及的例子的學(xué)習(xí)板相關(guān)的內(nèi)容。 由于本人水平有限,錯漏和不嚴(yán)謹(jǐn)之處在所難免,歡迎大家批評指正。 嵌入式控制研究室              http://www.21control.com 2006年4月20日 目 錄 第一章PLD/FPGA的基本知識 ……………………………………………………………………… 第二章 FPGA基本教程 …………………………………………………………………………………… 第一節(jié) FPGA的基本開發(fā)流程 ……………………………………………………………………………… 第二節(jié) 基于QuartusII的實(shí)例………………………………………………………………………………… 實(shí)驗(yàn)一 實(shí)驗(yàn)板上的KEY1按鈕控制FPGA核心板上的第一個LED燈介紹 ……………………………… 實(shí)驗(yàn)二 7段數(shù)碼管實(shí)驗(yàn) ………………………………………………………………………………… 實(shí)驗(yàn)三 用FPGA設(shè)計(jì)串口數(shù)據(jù)收發(fā) ………………………………………………………………………… 第三章 SOPC的基本開發(fā)流程 ………………………………………………………………………………… 第一節(jié) SOPC vs MCU、DSP和FPGA ……………………………………………………………………… 第二節(jié) 基于QuantusII和NiosII的SOPC基本開發(fā)流程 …………………………………………………… 第三節(jié) 基于QuantusII和NiosII的SOPC實(shí)例 …………………………………………………………… 實(shí)驗(yàn)一 核心板上的兩個LED交替閃爍 ………………………………………………………………… 實(shí)驗(yàn)二 4位7段數(shù)碼管IP core設(shè)計(jì)以及flash的燒寫教程 ………………………………… 實(shí)驗(yàn)三 LCD設(shè)備驅(qū)動開發(fā) ……………………………………………………………………… 實(shí)驗(yàn)四 ALL_TEST綜合設(shè)計(jì) …………………………………………………………………………… 第四章 FPGA開發(fā)板V3.0中嵌入Uclinux的步驟和方法…………………………………………………… 第一章 CPLD/FPGA的基本知識 (一)可編程邏輯器件的歷史和概述 隨著數(shù)字電路應(yīng)用越來越廣泛,傳統(tǒng)通用的數(shù)字集成芯片已經(jīng)難以滿足系統(tǒng)的功能要求,而且隨著系統(tǒng)復(fù)雜程度的提高,所需通用集成電路的數(shù)量呈爆炸性增值,使得電路的體積膨大,可靠性難以保證。此外,現(xiàn)代產(chǎn)品的生命周期都很短,一個電路可能需要在很短的周期內(nèi)作改動以滿足新的功能需求,對于采用通用的數(shù)字集成電路設(shè)計(jì)的電路系統(tǒng)來說即意味著重新設(shè)計(jì)和重新布線。因此,系統(tǒng)設(shè)計(jì)師們希望自己設(shè)計(jì)專用集成電路(ASIC)芯片,而且希望ASIC的設(shè)計(jì)周期盡可能短,最好是在實(shí)驗(yàn)室里就能設(shè)計(jì)出合適的ASIC芯片,并且立即投入實(shí)際應(yīng)用之中,因而出現(xiàn)了現(xiàn)場可編程邏輯器件(FPLD),其中應(yīng)用最廣泛的當(dāng)屬現(xiàn)場可編程門陣列(FPGA)和復(fù)雜可編程邏輯器件(CPLD)。 早期的可編程邏輯器件只有可編程只讀存貯器(PROM)、紫外線可按除只讀存貯器(EPROM)和電可擦除只讀存貯器(EEPROM)三種。由于結(jié)構(gòu)的限制,它們只能完成簡單的數(shù)字邏輯功能。 其后,出現(xiàn)了一類結(jié)構(gòu)上稍復(fù)雜的可編程芯片,即可編程邏輯器件(PLD),它能夠完成各種數(shù)字邏輯功能。典型的PLD由一個“與”門和一個“或”門陣列組成,而任意一個組合邏輯都可以用“與一或”表達(dá)式來描述,所以, PLD能以乘積和的形式完成大量的組合邏輯功能。 這一階段的產(chǎn)品主要有PAL(可編程陣列邏輯)和GAL(通用陣列邏輯)。PAL由一個可編程的“與”平面和一個固定的“或”平面構(gòu)成,或門的輸出可以通過觸發(fā)器有選擇地被置為寄存狀態(tài)。 PAL器件是現(xiàn)場可編程的,它的實(shí)現(xiàn)工藝有反熔絲技術(shù)、EPROM技術(shù)和EEPROM技術(shù)。還有一類結(jié)構(gòu)更為靈活的邏輯器件是可編程邏輯陣列(PLA),它也由一個“與”平面和一個“或”平面構(gòu)成,但是這兩個平面的連接關(guān)系是可編程的。 PLA器件既有現(xiàn)場可編程的,也有掩膜可編程的。 在PAL的基礎(chǔ)上,又發(fā)展了一種通用陣列邏輯GAL (Generic Array Logic),如GAL16V8,GAL22V10 等。它采用了EEPROM工藝,實(shí)現(xiàn)了電可按除、電可改寫,其輸出結(jié)構(gòu)是可編程的邏輯宏單元,因而它的設(shè)計(jì)具有很強(qiáng)的靈活性,至今仍有許多人使用。 這些早期的PLD器件的一個共同特點(diǎn)是可以實(shí)現(xiàn)速度特性較好的邏輯功能,但其過于簡單的結(jié)構(gòu)也使它們只能實(shí)現(xiàn)規(guī)模較小的電路。為了彌補(bǔ)這一缺陷,20世紀(jì)80年代中期。 Altera和Xilinx分別推出了類似于PAL結(jié)構(gòu)的擴(kuò)展型 CPLD(Complex Programmab1e Logic Dvice)和與標(biāo)準(zhǔn)門陣列類似的FPGA(Field Programmable Gate Array),它們都具有體系結(jié)構(gòu)和邏輯單元靈活、集成度高以及適用范圍寬等特點(diǎn)。這兩種器件兼容了PLD和通用門陣列的優(yōu)點(diǎn),可實(shí)現(xiàn)較大規(guī)模的電路,編程也很靈活。與門陣列等其它ASIC(Application Specific IC)相比,它們又具有設(shè)計(jì)開發(fā)周期短、設(shè)計(jì)制造成本低、開發(fā)工具先進(jìn)、標(biāo)準(zhǔn)產(chǎn)品無需測試、質(zhì)量穩(wěn)定以及可實(shí)時在線檢驗(yàn)等優(yōu)點(diǎn),因此被廣泛應(yīng)用于產(chǎn)品的原型設(shè)計(jì)和小批量產(chǎn)品生產(chǎn)(一般在10,000件以下)之中。幾乎所有應(yīng)用門陣列、PLD和中小規(guī)模通用數(shù)字集成電路的場合均可應(yīng)用FPGA和CPLD器件。 (二)FPGA、CPLD 概述 FPGA(現(xiàn)場可編程門陣列)與 CPLD(復(fù)雜可編程邏輯器件)都是可編程邏輯器件,它們是在PAL,GAL等邏輯器件的基礎(chǔ)之上發(fā)展起來的。同以往的PAL,GAL等相比較,F(xiàn)PGA/CPLD的規(guī)模比較大,它可以替代幾十甚至幾千塊通用IC芯片。這樣的FPGA/CPLD實(shí)際上就是一個子系統(tǒng)部件。這種芯片受到世界范圍內(nèi)電子工程設(shè)計(jì)人員的廣泛關(guān)注和普遍歡迎。經(jīng)過了十幾年的發(fā)展,許多公司都開發(fā)出了多種可編程邏輯器件。比較典型的就是Altera公司和Xilinx公司的CPLD器件系列和FPGA器件系列,它們開發(fā)較早,占用了較大的PLD市場。通常來說,在歐洲用Xilinx的人多,在日本和亞太地區(qū)用ALTERA的人多,在美國則是平分秋色。全球PLD/FPGA產(chǎn)品60%以上是由Altera和Xilinx提供的。可以講Altera和Xilinx共同決定了PLD技術(shù)的發(fā)展方向。當(dāng)然還有許多其它類型器件,如:Lattice,Vantis,Actel,Quicklogic,Lucent等。 (99年Lattice收購了Vantis,成為第三大PLD供應(yīng)商。 本文引用地址:http://www.eepw.com.cn/article/201706/349482.htm 表1.2.1 1998年世界十大PLD公司

盡管FPGA,CPLD和其它類型PLD的結(jié)構(gòu)各有其特點(diǎn)和長處,但概括起來,它們是由三大部分組成的:(1)一個二維的邏輯塊陣列,構(gòu)成了PLD器件的邏輯組成核心;(2)輸入/輸出塊;(3)連接邏輯塊的互連資源,由各種長度的連線線段組成,其中也有一些可編程的連接開關(guān),它們用于邏輯塊之間、邏輯塊與輸入/輸出塊之間的連接。

對用戶而言,雖然CPLD與FPGA的內(nèi)部結(jié)構(gòu)稍有不同,但其用法都一樣,所以多數(shù)情況下,不加以區(qū)分。FPGA/CPLD芯片都是特殊的ASIC芯片,它們除了具有ASIC的特點(diǎn)之外,還具有以下幾個優(yōu)點(diǎn): (1) 隨著VlSI(Very Large Scale IC,超大規(guī)模集成電路)工藝的不斷提高單一芯片內(nèi)部可以容納上百萬個晶體管, FPGA/CPLD芯片的規(guī)模也越來越大,其單片邏輯門數(shù)已達(dá)到上百萬門,它所能實(shí)現(xiàn)的功能也越來越強(qiáng),同時也可以實(shí)現(xiàn)系統(tǒng)集成,即片上系統(tǒng)SOC。 (2) FPGA/CPLD芯片在出廠之前都做過百分之百的測試,不需要設(shè)計(jì)人員承擔(dān)投片風(fēng)險和費(fèi)用,設(shè)計(jì)人員只需在自己的實(shí)驗(yàn)室里就可以通過相關(guān)的軟硬件環(huán)境來完成芯片的最終功能設(shè)計(jì)。所以, FPGA/CPLD的資金投入小,節(jié)省了許多潛在的花費(fèi)。 (3) 用戶可以反復(fù)地編程、擦除、使用或者在外圍電路不動的情況下用不同軟件就可實(shí)現(xiàn)不同的功能。所以,用FPGA/PLD 試制樣片,能以最快的速度占領(lǐng)市場。 FPGA/CPLD軟件包中有各種輸入工具和仿真工具,及版圖設(shè)計(jì)工具和編程器等全線產(chǎn)品,電路設(shè)計(jì)人員在很短的時間內(nèi)就可完成電路的輸入、編譯、優(yōu)化、仿真,直至最后芯片的制作。當(dāng)電路有少量改動時,更能顯示出FPGA/CPLD的優(yōu)勢。電路設(shè)計(jì)人員使用FPGA/CPLD進(jìn)行電路設(shè)計(jì)時,不需要具備專門的IC(集成電路)深層次的知識, FPGA/CPLD軟件易學(xué)易用,可以使設(shè)計(jì)人員更能集中精力進(jìn)行電路設(shè)計(jì),快速將產(chǎn)品推向市場。 (4) 在線可編程技術(shù)(ISP)使得使用CPLD/FPGA的產(chǎn)品可以做到遠(yuǎn)程升級。 (以上內(nèi)容參照西電《CPLD技術(shù)及其應(yīng)用》,有改動) (三)PLD/FPGA 結(jié)構(gòu)與原理初步 一. 基于乘積項(xiàng)(Product-Term)的PLD結(jié)構(gòu) 采用這種結(jié)構(gòu)的PLD芯片有:Altera的MAX7000,MAX3000系列(EEPROM工藝),Xilinx的XC9500系列(Flash工藝)和Lattice,Cypress的大部分產(chǎn)品(EEPROM工藝)。我們先看一下這種PLD的總體結(jié)構(gòu)(以MAX7000為例,其他型號的結(jié)構(gòu)與此都非常相似):

這種PLD可分為三塊結(jié)構(gòu):宏單元(Marocell),可編程連線(PIA)和I/O控制塊。 宏單元是PLD的基本結(jié)構(gòu),由它來實(shí)現(xiàn)基本的邏輯功能。圖1.3.1中陰影部分是多個宏單元的集合(因?yàn)楹陠卧^多,沒有一一畫出)??删幊踢B線負(fù)責(zé)信號傳遞,連接所有的宏單元。I/O控制塊負(fù)責(zé)輸入輸出的電氣特性控制,比如可以設(shè)定集電極開路輸出,擺率控制,三態(tài)輸出等。圖1.3.1 左上的INPUT/GCLK1,INPUT/GCLRn,INPUT/OE1,INPUT/OE2 是全局時鐘,清零和輸出使能信號,這幾個信號有專用連線與PLD中每個宏單元相連,信號到每個宏單元的延時相同并且延時最短。宏單元的具體結(jié)構(gòu)見下圖:

左側(cè)是乘積項(xiàng)陣列,實(shí)際就是一個與或陣列,每一個交叉點(diǎn)都是一個可編程熔絲,如果導(dǎo)通就是實(shí)現(xiàn)“與”邏輯。后面的乘積項(xiàng)選擇矩陣是一個“或”陣列。兩者一起完成組合邏輯。圖右側(cè)是一個可編程D觸發(fā)器,它的時鐘,清零輸入都可以編程選擇,可以使用專用的全局清零和全局時鐘,也可以使用內(nèi)部邏輯(乘積項(xiàng)陣列)產(chǎn)生的時鐘和清零。如果不需要觸發(fā)器,也可以將此觸發(fā)器旁路,信號直接輸給PIA或輸出到I/O腳。 二. 乘積項(xiàng)結(jié)構(gòu)PLD的邏輯實(shí)現(xiàn)原理下面我們以一個簡單的電路為例,具體說明PLD是如何利用以上結(jié)構(gòu)實(shí)現(xiàn)邏輯的,電路如下圖:

假設(shè)組合邏輯的輸出(AND3的輸出)為f,則f=(A+B)*C*(!D)=A*C*!D + B*C*!D ( 我們以!D表示D的“非”) PLD將以下面的方式來實(shí)現(xiàn)組合邏輯f:

A,B,C,D由PLD芯片的管腳輸入后進(jìn)入可編程連線陣列(PIA),在內(nèi)部會產(chǎn)生A,A反,B,B反,C,C反,D,D反8個輸出。圖中每一個叉表示相連(可編程熔絲導(dǎo)通),所以得到:f= f1 + f2 = (A*C*!D) + (B*C*!D) 。這樣組合邏輯就實(shí)現(xiàn)了。 圖3電路中D觸發(fā)器的實(shí)現(xiàn)比較簡單,直接利用宏單元中的可編程D觸發(fā)器來實(shí)現(xiàn)。時鐘信號CLK由I/O腳輸入后進(jìn)入芯片內(nèi)部的全局時鐘專用通道,直接連接到可編程觸發(fā)器的時鐘端??删幊逃|發(fā)器的輸出與I/O腳相連,把結(jié)果輸出到芯片管腳。這樣PLD就完成了圖1.3.3所示電路的功能。(以上這些步驟都是由軟件自動完成的,不需要人為干預(yù))。 圖1.3.3的電路是一個很簡單的例子,只需要一個宏單元就可以完成。但對于一個復(fù)雜的電路,一個宏單元是不能實(shí)現(xiàn)的,這時就需要通過并聯(lián)擴(kuò)展項(xiàng)和共享擴(kuò)展項(xiàng)將多個宏單元相連,宏單元的輸出也可以連接到可編程連線陣列,再做為另一個宏單元的輸入。這樣PLD就可以實(shí)現(xiàn)更復(fù)雜邏輯。 這種基于乘積項(xiàng)的PLD基本都是由EEPROM和Flash工藝制造的,一上電就可以工作,無需其他芯片配合。 三. 表(Look-Up-Table)的原理與結(jié)構(gòu)采用這種結(jié)構(gòu)的PLD芯片我們也可以稱之為FPGA:如altera的ACEX,APEX系列,xilinx的Spartan,Virtex系列等。查找表(Look-Up-Table)簡稱為LUT,LUT本質(zhì)上就是一個RAM。 目前FPGA中多使用4輸入的LUT,所以每一個LUT可以看成一個有4位地址線的16x1的RAM。當(dāng)用戶通過原理圖或HDL語言描述了一個邏輯電路以后,PLD/FPGA開發(fā)軟件會自動計(jì)算邏輯電路的所有可能的結(jié)果,并把結(jié)果事先寫入RAM,這樣,每輸入一個信號進(jìn)行邏輯運(yùn)算就等于輸入一個地址進(jìn)行查表,找出地址對應(yīng)的內(nèi)容,然后輸出即可。 下面是一個4輸入與門的例子:

四. 基于查找表(LUT)的FPGA的結(jié)構(gòu) altera的FLEX/ACEX等芯片的結(jié)構(gòu)如下圖:

邏輯單元(LE)內(nèi)部結(jié)構(gòu) FLEX/ACEX的結(jié)構(gòu)主要包括LAB,I/O塊,RAM塊(未表示出)和可編程行/列連線。在FLEX/ACEX中,一個LAB包括8個邏輯單元(LE),每個LE包括一個LUT,一個觸發(fā)器和相關(guān)的相關(guān)邏輯。LE是FLEX/ACEX芯片實(shí)現(xiàn)邏輯的最基本結(jié)構(gòu)(altera其他系列,如APEX、CYCLONE等的結(jié)構(gòu)與此基本相同,具體請參閱數(shù)據(jù)手冊)。 五.查找表結(jié)構(gòu)的FPGA邏輯實(shí)現(xiàn)原理 我們還是以這個電路的為例:

A,B,C,D由FPGA芯片的管腳輸入后進(jìn)入可編程連線,然后作為地址線連到到LUT,LUT中已經(jīng)事先寫入了所有可能的邏輯結(jié)果,通過地址查找到相應(yīng)的數(shù)據(jù)然后輸出,這樣組合邏輯就實(shí)現(xiàn)了。該電路中D觸發(fā)器是直接利用LUT后面D觸發(fā)器來實(shí)現(xiàn)。時鐘信號CLK由I/O腳輸入后進(jìn)入芯片內(nèi)部的時鐘專用通道,直接連接到觸發(fā)器的時鐘端。觸發(fā)器的輸出與I/O腳相連,把結(jié)果輸出到芯片管腳。這樣PLD就完成了圖1.3.3所示電路的功能。(以上這些步驟都是由軟件自動完成的,不需要人為干預(yù))。 這個電路是一個很簡單的例子,只需要一個LUT加上一個觸發(fā)器就可以完成。對于一個LUT無法完成的的電路,就需要通過進(jìn)位邏輯將多個單元相連,這樣FPGA就可以實(shí)現(xiàn)復(fù)雜的邏輯。 由于LUT主要適合SRAM工藝生產(chǎn),所以目前大部分FPGA都是基于SRAM工藝的,而SRAM工藝的芯片在掉電后信息就會丟失,一定需要外加一片專用配置芯片,在上電的時候,由這個專用配置芯片把數(shù)據(jù)加載到FPGA中,然后FPGA就可以正常工作,由于配置時間很短,不會影響系統(tǒng)正常工作。也有少數(shù)FPGA采用反熔絲或Flash工藝,對這種FPGA,就不需要外加專用的配置芯片。 六.選擇PLD還是FPGA? 根據(jù)上述PLD的結(jié)構(gòu)和原理可以知道,PLD分解組合邏輯的功能很強(qiáng),一個宏單元就可以分解十幾個甚至20-30多個組合邏輯輸入。而FPGA的一個LUT只能處理4輸入的組合邏輯,因此,PLD適合用于設(shè)計(jì)譯碼等復(fù)雜組合邏輯。但FPGA的制造工藝確定了FPGA芯片中包含的LUT和觸發(fā)器的數(shù)量非常多,往往都是幾千上萬,PLD一般只能做到512個邏輯單元,而且如果用芯片價格除以邏輯單元數(shù)量,F(xiàn)PGA的平均邏輯單元成本大大低于PLD。所以如果設(shè)計(jì)中使用到大量觸發(fā)器,例如設(shè)計(jì)一個復(fù)雜的時序邏輯,那么使用FPGA就是一個很好選擇。

標(biāo)簽: SOPC FPGA 快速教程 開發(fā)板

相關(guān)閱讀

依兰县| 长春市| 永善县| 达州市| 昆明市| 安西县| 邢台县| 睢宁县| 邓州市| 陕西省| 杭锦旗| 延吉市| 建平县| 连江县| 公安县| 仙游县| 斗六市| 澄城县| 金溪县| 鹤岗市| 慈利县| 莱芜市| 青龙| 孝感市| 同仁县| 永和县| 成安县| 闽清县| 喜德县| 监利县| 左云县| 石景山区| 永嘉县| 南乐县| 江陵县| 施甸县| 阳西县| 沁源县| 木兰县| 黄骅市| 甘肃省|