• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Avalon-MM的I2C總線控制器設(shè)計及VMM驗證

      2016-03-17 01:55:44張曉龍
      計算機測量與控制 2016年2期
      關(guān)鍵詞:覆蓋率控制器

      張曉龍

      (上海大學(xué) 微電子研究與開發(fā)中心,上?!?00072)

      ?

      基于Avalon-MM的I2C總線控制器設(shè)計及VMM驗證

      張曉龍

      (上海大學(xué) 微電子研究與開發(fā)中心,上海200072)

      摘要:分析了Avalon-MM總線的架構(gòu)以及I2C總線的傳輸方式,提出了一種可行的I2C總線控制設(shè)計方案,并說明了詳細的實現(xiàn)過程;設(shè)計的基于Avalon-MM總線的I2C總線控制器可復(fù)用IP核,可以不加修改地應(yīng)用在基于Altera公司產(chǎn)品的SOPC系統(tǒng)中;使用VMM驗證方法學(xué)構(gòu)建了多層次可復(fù)用的驗證平臺,對設(shè)計進行了全面的驗證;整個驗證平臺使用systemverilog語言實現(xiàn),仿真工具使用VCS-MX200606;最后仿真結(jié)果顯示,設(shè)計被完全地驗證并達到100%覆蓋率。

      關(guān)鍵詞:總線接口;控制器;驗證方向?qū)W;覆蓋率

      0引言

      現(xiàn)在半導(dǎo)體制造技術(shù)的發(fā)展已經(jīng)可以實現(xiàn)一塊芯片容納幾億個晶體管,這使得一塊芯片中可以集成更多的系統(tǒng)功能,并且引發(fā)了芯片設(shè)計方法學(xué)的變革。制造工藝的發(fā)展和對功能更強產(chǎn)品的需求使得SOC的設(shè)計成為主流[1]。傳統(tǒng)的設(shè)計方法已經(jīng)不能適用于這種規(guī)模復(fù)雜芯片的設(shè)計,對于SOC設(shè)計,設(shè)計復(fù)用-重用之前編寫和驗證過的代碼-是唯一以可接收的代價完成 如此復(fù)雜設(shè)計的方法[2]?,F(xiàn)在設(shè)計人員的主要挑戰(zhàn)是使完成的設(shè)計是可復(fù)用的和如何復(fù)用之前的設(shè)計。

      使用標(biāo)準(zhǔn)總線接口的設(shè)計可以有效提高可重用性,使用標(biāo)準(zhǔn)的接口可使設(shè)計易于理解和易于找到可用的IP核加快設(shè)計的進度[3]。另外,針對此標(biāo)準(zhǔn)接口的驗證IP核也可在多個項目中重用,加速驗證過程。使用標(biāo)準(zhǔn)接口的設(shè)計的功能模塊也更容易在系統(tǒng)層次的集成,因為IP接口信號與總線信號是統(tǒng)一的[4]。

      隨著芯片門數(shù)和復(fù)雜度的急劇增加,芯片驗證的工作量達到了整個芯片研發(fā)的70%,功能驗證越來越成為設(shè)計過程中的瓶頸[5]。這催生了專門用于驗證的編程語言(systemverilog)和一系列基于該語言的驗證方法學(xué)的產(chǎn)生和發(fā)展,例如VMM,AVM,OVM,UVM等。基于方法學(xué)的驗證可通過多種機制顯著提高驗證生成率,例如斷言、抽象、自動化和重用[6]。

      本文設(shè)計了一個I2C總線控制器[7],該控制器使用Avalon-MM標(biāo)準(zhǔn)接口,可不加修改地應(yīng)用于使用Altera公式產(chǎn)品構(gòu)建的SOPC系統(tǒng)中[8]。然后應(yīng)用VMM驗證方法學(xué)為該設(shè)計搭建了一個可移植、重用、擴展、完全自動檢查、具有層次化結(jié)構(gòu)的驗證平臺,使用受約束的隨機激勵生成和功能覆蓋率等技術(shù),對設(shè)計進行了全面的功能驗證,并且達到100% 的覆蓋率。

      1設(shè)計描述

      設(shè)計可以分為兩個主要部分:I2C協(xié)議產(chǎn)生部分和Avalon-MM總線接口部分。I2C總線協(xié)議部分負(fù)責(zé)完成在I2C總線上按照協(xié)議完成數(shù)據(jù)的傳輸。Avalon-MM總線接口部分聯(lián)系系統(tǒng)處理器和I2C控制器部分,處理器通過該接口完成對I2C傳輸數(shù)據(jù)和地址等信息的控制。設(shè)計的詳細模塊如圖1所示。

      圖1 設(shè)計架構(gòu)

      1.1I2C協(xié)議產(chǎn)生器

      I2C,全稱Inter Integrated Circuit,是由飛利浦公司開發(fā)的一種兩線式串行總線。它用兩根線,時鐘線和數(shù)據(jù)線,實現(xiàn)數(shù)據(jù)的雙向同步傳輸,具有結(jié)構(gòu)簡單,成本低等優(yōu)點,得到越來越廣泛的應(yīng)用。I2C已經(jīng)成為芯片間低速串行通信的事實標(biāo)準(zhǔn),應(yīng)用于各類消費電子、電子控制設(shè)備和各式傳感器中。

      I2C總線采用簡單的兩線式結(jié)構(gòu),可以最小化引腳和PCB布線的開銷。I2C總線支持多主機結(jié)構(gòu),但在同一時刻只允許一個主機獲得總線控制權(quán),所以要通過仲裁來解決多個主機爭搶總線的問題,以免發(fā)生數(shù)據(jù)沖突。每個從機都有唯一的7比特的地址碼,主機依據(jù)此地址碼選址從機。

      I2C定義了嚴(yán)格的數(shù)據(jù)傳輸時序,它以一個字節(jié)為單位進行數(shù)據(jù)傳輸,一次8比特數(shù)據(jù)傳輸結(jié)束后,接收方應(yīng)發(fā)送一位響應(yīng)位以確認(rèn)數(shù)據(jù)接收成功。每次傳輸主機都要發(fā)送一位開始位和結(jié)束位來發(fā)起和結(jié)束一次數(shù)據(jù)傳輸。

      1)空閑狀態(tài):I2C總線的空閑狀態(tài)是時鐘信號SCL的數(shù)據(jù)信號SDA同時處于高電平的狀態(tài),此時沒有主機占用總線,由于上拉電阻的緣故,兩根信號被上拉至高電平。

      2)起始位:I2C總線定義在SCL為高電平時,SDA由高電平跳到低電平為起始信號。通過發(fā)送起始位信號,主機通知從機開始數(shù)據(jù)傳輸。

      3)數(shù)據(jù)幀:在發(fā)送起始位后,主機開始從SDA逐位發(fā)送或結(jié)收數(shù)據(jù)幀,主機首先發(fā)送一個字節(jié)的從機地址碼以尋址從機,該字節(jié)包含7比特的從器件地址和一位讀寫標(biāo)志,1代表讀,0代表寫。需要注意的是,在數(shù)據(jù)幀傳輸期間SDA信號值只能在SCL為低時改變,只有在起始位結(jié)束位時,SDA才能在SCL為高電平時改變。

      4)相應(yīng)位:主機或從機每發(fā)送完一個字節(jié),需要對方釋放掉SDA的控制權(quán)來接收對方的響應(yīng)。如果對方響應(yīng)(SDA為低電平)則可繼續(xù)傳輸,如果不響應(yīng)(SDA為高電平)則應(yīng)結(jié)束傳輸。

      5)結(jié)束位:I2C總線規(guī)定當(dāng)SCL為高時,SDA由低電平變?yōu)楦唠娖綖榻Y(jié)束信號。結(jié)束位的產(chǎn)生代表著一次傳輸?shù)慕Y(jié)束,總線回到空閑狀態(tài),直到下次起始位。

      圖2 I2C控制的狀態(tài)機

      1.2Avalon-MM總線接口

      Avalon-MM是Avalon總線的一個子集。Avalon總線是Altera公司專門為可編程芯片片上系統(tǒng)(System-On-a-Programmable-Chip, 以下簡稱SOPC)而推出的一套片內(nèi)總線系統(tǒng),與Nios系列的處理器軟核一起,二者構(gòu)成了Altera公司SOPC解決方案中的核心部分。

      Avalon-MM全稱是Avalon Memory- Mapped,是一套互聯(lián)式總線接口,主要用于多節(jié)點的互聯(lián),具有較好的數(shù)據(jù)交換特性和很高的總線帶寬,由于是針對SOPC設(shè)計的,Avalon-MM總線模塊具有結(jié)構(gòu)簡單,采用全同步時序,以及可以靈活地配置等特點,其運行時鐘、位寬、接口信號以及接口時序等都可以靈活地選擇或配置。

      Avalon-MM總線外設(shè)的控制或數(shù)據(jù)寄存器都可映射為處理器尋址空間內(nèi)的一個地址。該設(shè)計中使用4個映射到地址空間的寄存器為I2C控制器提供所需的數(shù)據(jù)信息。寄存器slave_ID用于指示要控制的從機編號和最后一位讀寫控制位。寄存器sub_addr用于說明要訪問的從機內(nèi)部地址。寄存器data 是要寫入從設(shè)備或從從機接收到的數(shù)據(jù)。寄存器status 指示控制器的當(dāng)前狀態(tài)。圖3是本文設(shè)計的控制器選擇的接口信號和對控制器內(nèi)寄存器的讀寫時序。

      圖3 接口讀取時序

      1.3接口與協(xié)議產(chǎn)生部分的連接

      I2C總線是低速總線,其時鐘最大不超過400 kHz。而外部的主器件可能工作在很高的頻率,比如50 MHz甚至更高。這樣兩個時鐘域之間的信息交換可能會由于不能滿足建立時間或保持時間而導(dǎo)致亞穩(wěn)態(tài)的發(fā)生。為了避免亞穩(wěn)態(tài),使用了全同步式設(shè)計,所有的寄存器都由接口的高頻時鐘驅(qū)動,但為了實現(xiàn)I2C的低頻傳輸,將使用分頻得到的低頻時鐘作為參考時鐘,通過脈沖邊沿檢測的方式,控制I2C狀態(tài)機的轉(zhuǎn)換,完成數(shù)據(jù)的低頻傳輸。

      Avalon接口的status寄存器是狀態(tài)寄存器,Avalon可以寫入該寄存器以控制I2C協(xié)議發(fā)生器,也可以讀取該寄存器以了解I2C的當(dāng)前狀態(tài)。寄存器最后一位代表I2C協(xié)議發(fā)生器的閑忙狀態(tài),0代表空閑,接口可以通過寫入寄存器相應(yīng)的值,并在status寄存器最后一位寫入1來啟動一次I2C傳輸,每次傳輸結(jié)束該位會被清零,可以接收下一次的傳輸。

      2驗證平臺

      本文使用VMM驗證方法學(xué)實現(xiàn)了一個分層驗證平臺,并設(shè)計了足夠的測試用例來覆蓋所有可能的邊界條件。如圖4所示,該驗證平臺包含激勵生成器、驅(qū)動器、監(jiān)視器、記分板和覆蓋率統(tǒng)計等功能組件,它們協(xié)同工作完成對DUT(design under test,待驗證設(shè)計,這里指的是I2C控制器)的功能驗證。

      圖4 分層結(jié)構(gòu)的驗證平臺

      2.1激勵生成器

      激勵生成器i2c_gen派生至vmm_xactor類,用來隨機產(chǎn)生用于激勵DUT的各種數(shù)據(jù),并通過數(shù)據(jù)通道(i2c_trans_channel)傳輸給下層結(jié)構(gòu)i2c_Driver。生成器產(chǎn)生的數(shù)據(jù)結(jié)構(gòu)i2c_trans派生至vmm_data,加入了工程相關(guān)的特定的數(shù)據(jù)結(jié)構(gòu)和子程序。要進行一次I2C總線傳輸,需要知道從設(shè)備的標(biāo)號、訪問的從設(shè)備內(nèi)部地址和傳輸?shù)臄?shù)據(jù)的等信息。但是不是每一個由生成器產(chǎn)生的這些信息都是有效的,所以使用受約束的激勵生成器可以產(chǎn)生理想的數(shù)據(jù),而不是之后分析并丟棄無效的數(shù)據(jù)。

      隨機生成器的目標(biāo)是應(yīng)該能生成完全驗證特定設(shè)計所需的全部激勵。不同的測試用例可能需產(chǎn)生不同的激勵,所以生成器中使用了工廠模式,可以實現(xiàn)在testcase中改變要產(chǎn)生的目標(biāo)數(shù)據(jù),而不是修改i2c_gen結(jié)構(gòu)。

      2.2驅(qū)動器和監(jiān)測器

      在驗證平臺中,位于命令層的驅(qū)動器(driver)和監(jiān)測器(monitor)是直接與DUT交互的功能組件,將上層的事務(wù)轉(zhuǎn)化為信號層DUT引腳的實際激勵。他們是基于事務(wù)(transaction)的驗證環(huán)境的基礎(chǔ),更高的抽象級別是驗證平臺不在關(guān)注底層信號的細節(jié),更容易復(fù)雜的功能。

      接口(interface)是systemverilog中的一個重要數(shù)據(jù)結(jié)構(gòu),它是連接DUT中靜態(tài)信號和驗證環(huán)境中動態(tài)數(shù)據(jù)結(jié)構(gòu)的紐帶。I2C控制器的Avalon總線接口被抽象成一個interface數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)在驅(qū)動器實例化時被傳進該驗證組件內(nèi)部,在驅(qū)動器內(nèi)部以虛接口(virtual interface)的形式存在。之后,驅(qū)動器就可根據(jù)從上層組件接收到的事務(wù)并按照Avalon總線的時序?qū)μ摻涌趦?nèi)的信號進行操作完成對DUT的驅(qū)動。

      同樣地,監(jiān)測器也是通過虛接口跟I2C總線交互,通過監(jiān)測這兩根信號的變化,按照I2C協(xié)議來接收數(shù)據(jù)并做相應(yīng)的響應(yīng)。并將監(jiān)測和響應(yīng)的信息抽象成事務(wù)傳輸給上層結(jié)構(gòu)。

      2.3自檢結(jié)構(gòu)和斷言

      自檢結(jié)構(gòu)記分板(scoreboard)是在運行時檢查DUT響應(yīng)是否正確的驗證組件。記分板按順序比較驅(qū)動器發(fā)給DUT的激勵和監(jiān)視器響應(yīng)的數(shù)據(jù),如果不相等則報出一個錯誤。

      斷言(assertion)是觀察和定位設(shè)計中協(xié)議或規(guī)則錯誤的一種有效手段,當(dāng)斷言在仿真過程中失敗,從報告的錯誤信息中很容易定位到錯誤所在。在本文中使用斷言檢測Avalon總線協(xié)議和I2C協(xié)議的正確性。

      2.4功能覆蓋率

      功能覆蓋率是衡量設(shè)計可信度和驗證進度的重要指標(biāo),驗證的目的是保證設(shè)計在實際的運行過程中的行為正確。設(shè)計規(guī)范對設(shè)計的行為進行詳細的描述,驗證計劃從中抽象出相應(yīng)的設(shè)計特性。驗證平臺為設(shè)計仿真出實際的運行環(huán)境,并從驗證環(huán)境中收集數(shù)據(jù)以確定設(shè)計的哪些行為特性已經(jīng)被仿真覆蓋,以此估計驗證的功能覆蓋率。

      功能覆蓋率信息的收集使用驅(qū)動器回調(diào)函數(shù)(callback method)的方式實現(xiàn),這能保證驗證環(huán)境的靈活性。不同的測試用例可能要求驗證組件表現(xiàn)不同的行為,回調(diào)函數(shù)使驗證組件的功能是可控的和可配置的,而不必為每一個測試用例使用不同的驗證組件。驅(qū)動器在每次向DUT發(fā)送激勵后,執(zhí)行回調(diào)函數(shù)并將激勵信息作為參數(shù)傳給回調(diào)函數(shù),函數(shù)內(nèi)的covergroup結(jié)構(gòu)完成覆蓋率信息的收集。

      2.5驗證環(huán)境

      驗證環(huán)境類i2c_env派生至vmm_env類,作為驗證平臺的頂層包裝,它將各種驗證組件封裝在一起,并提供仿真過程控制的語法。驗證平臺的各種組件都會在該環(huán)境類中被創(chuàng)建和實例化,并在環(huán)境類的控制下完成仿真。為了避免競爭和冒險,仿真過程被分成許多個執(zhí)行步驟,各個階段完成指定的工作,這通過環(huán)境類中的各種虛函數(shù)實現(xiàn)。當(dāng)i2c_env::run()函數(shù)在testcase中被顯式調(diào)用時,環(huán)境類中的以下虛函數(shù)會依次地被隱含地調(diào)用,完成各自的功能,最后完成仿真過程。

      1)gen_cfg(),該函數(shù)產(chǎn)生隨機的DUT和驗證平臺配置數(shù)據(jù)。用于配置DUT和驗證平臺的工作狀態(tài)。

      2)build(),該函數(shù)創(chuàng)建各個驗證組件,并用產(chǎn)生的配置信息配置驗證環(huán)境,將各驗證組件通過管道相互連接,以傳輸數(shù)據(jù)。

      3)reset_dut(),該函數(shù)給DUT發(fā)送重置信號,是DUT進入初始狀態(tài),避免因為沒有正確初始化導(dǎo)致的錯誤。

      4)cfg_dut(),該函數(shù)用產(chǎn)生的配置信息配置DUT,使其工作在合適的工作狀態(tài)。

      5)start(),該函數(shù)使各個驗證組件開始工作。

      6)wait_for_end(),該函數(shù)阻塞以等待測試的結(jié)束條件。

      7)stop(),該函數(shù)使各驗證組件停止工作。

      8)cleanup(),該函數(shù)清理殘留的數(shù)據(jù),使仿真正常地結(jié)束。

      9)report(),該函數(shù)報告最終的仿真結(jié)果是失敗還是成功,并關(guān)閉所有文件。至此一次仿真過程結(jié)束。

      3實驗結(jié)果

      使用Synopsys公司的VCS仿真工具對該控制器的設(shè)計和驗證平臺進行了仿真,VCS首先對設(shè)計和驗證環(huán)境的源代碼進行編譯,然后執(zhí)行仿真過程。仿真的運行過程有驗證平臺的環(huán)境類控制。首先隨機產(chǎn)生各種配置參數(shù),創(chuàng)建驗證組件的實例并用產(chǎn)生的配置參數(shù)配置驗證平臺。然后初始化并配置設(shè)計使之處于有效的狀態(tài),并開始啟動各個驗證組件,產(chǎn)生激勵信息并驅(qū)動設(shè)計,同時觀察設(shè)計的響應(yīng),根據(jù)自檢結(jié)構(gòu)的比對結(jié)果判斷設(shè)計的功能正確與否。為了檢測各種條件下設(shè)計的運行結(jié)果,讀寫方式和讀寫的地址空間都隨機化。這樣就可以產(chǎn)生讀讀、寫寫、寫讀、讀寫等不同的激勵序列,對設(shè)計進行全方位的驗證。等到功能覆蓋率組件檢測到預(yù)定義的覆蓋率達到一定值,驗證完成,就可以結(jié)束仿真過程。在結(jié)束仿真工作退出前,還有做些收尾工作,如停止各個驗證組件的運行和報告仿真的結(jié)構(gòu)等。這些工作對于仿真的正常運行和以后的統(tǒng)計和調(diào)試都是必不可少的。

      仿真運行結(jié)果如圖5所示??梢钥吹剑采w率監(jiān)視器報告的最后對DUT的驗證達到100%的覆蓋率,說明驗證全面,對該控制器的所有可能的運行場景都進行了仿真。而自檢結(jié)構(gòu)記分板的報告顯示共進行了508次的比對,并且全部比對正確。為了便于調(diào)試,在仿真過程中使用verdi工具提供的波形產(chǎn)生函數(shù)生成了波形,verdi查看波形如圖6所示。從圖中也可以看到,Avalon接口和I2C總線的時序都是滿足協(xié)議標(biāo)準(zhǔn)的。綜上所述,可以說明設(shè)計的I2C控制器功能正確,可以用于工程應(yīng)用。

      圖5 仿真運行結(jié)果

      4結(jié)論

      基于標(biāo)準(zhǔn)總線的設(shè)計可以使一個復(fù)雜的SOC工程分為幾個部分,各部分可以獨立地開發(fā),最后集成在一起,并且可以`復(fù)用已有的IP核以加速整個SOC的研發(fā)。本文設(shè)計的I2C總線控制器,可不加修改地應(yīng)用于任何使用Altera公式產(chǎn)品構(gòu)建的SOPC系統(tǒng)中。復(fù)雜設(shè)計給驗證的挑戰(zhàn)迫使驗證在更高的抽象級別上進行,本文基于VMM驗證方法學(xué)搭建的驗證平臺在事務(wù)級運行,可顯著提高驗證的效率。驗證平臺的部分模塊也可在系統(tǒng)級驗證平臺中復(fù)用。

      參考文獻:

      [1] 鐘洪. 基于FPGA的SOC設(shè)計研究[J]. 機電元件, 2013(3):13-18.

      [2] Keating M J, Bricaud P. Reuse Methodology Manual for System-on-a-Chip Designs[M]. System-on-a-Chip Designs. Springer-Verlag GmbH, 2007:486-490.

      [3] Bergeron J. Verification Methodology Manual for SystemVerilog[M]. Springer, Berlin, 2006.

      [4] 楊鑫, 徐偉俊, 陳先勇,等. Avalon總線最新接口標(biāo)準(zhǔn)綜述[J]. 中國集成電路, 2007, 16(11):24-29.

      [5] Wang J, Ji X H, Yang N X, et al. An Advanced Verification Environment Based on VMM[J]. Advanced Materials Research, 2013, 655-657: 900-904.

      [6] 馮星宇, 黃新, 顏學(xué)龍. 支持AVALON總線協(xié)議的SPI通信設(shè)計實現(xiàn)[J]. 國外電子測量技術(shù), 2013, 32(3):66-70.

      [7] Semiconductor P. The I2C-Bus Specification Version2.1[EB/OL].2000: http://www.semiconductors.philips.com/acrobat/various/I2C_BUS_SPECIFICATION_3.pdf,2000.

      Avalon-MM Based I2C Bus Controller Design and Verification Using VMM

      Zhang Xiaolong

      (Microelectronic Resarch and Development Center,Shanghai200072,China)

      Abstract:In this paper, the architecture of Avalon-MM and the I2C bus protocol is analyzed. Then, a design of reusable I2C bus controller based on Avalon-MM bus and the detailed implement process is presented. This reusable IP core can be used in the SOPC system built on Altera company product without modification. A multi-level and reusable verification platform is implemented using VMM to verify this design. The whole verification environment uses the System Verilog language, and the simulation tool is Synopsys VCS-MX200606. The verification results indicate that design has been exactly checked out with 100% coverage.

      Keywords:bus interface; controller; verification methodology manual; coverage

      文章編號:1671-4598(2016)02-0147-04

      DOI:10.16526/j.cnki.11-4762/tp.2016.02.040

      中圖分類號:TP332

      文獻標(biāo)識碼:A

      作者簡介:張曉龍(1990-),男,河南開封通許人,碩士研究生,主要從事圖像處理和集成電路的設(shè)計和驗證工作。

      收稿日期:2015-08-03;修回日期:2015-08-31。

      猜你喜歡
      覆蓋率控制器
      民政部等16部門:到2025年村級綜合服務(wù)設(shè)施覆蓋率超80%
      工商業(yè)IC卡控制器改造為物聯(lián)網(wǎng)控制器實踐
      我國全面實施種業(yè)振興行動 農(nóng)作物良種覆蓋率超過96%
      基于噴丸隨機模型的表面覆蓋率計算方法
      基于DSP的復(fù)合跟蹤控制器的設(shè)計
      2015年湖南省活立木蓄積量、森林覆蓋率排名前10位的縣市區(qū)
      航空軟件代碼覆蓋率分析的項目管理
      模糊PID控制器設(shè)計及MATLAB仿真
      MOXA RTU控制器ioPAC 5542系列
      自動化博覽(2014年9期)2014-02-28 22:33:17
      紅獅控制 PID控制器PXU系列
      自動化博覽(2014年4期)2014-02-28 22:31:14
      香河县| 蒙山县| 金沙县| 松阳县| 中宁县| 弥勒县| 双桥区| 昌邑市| 黄平县| 泰和县| 阜阳市| 遵化市| 沐川县| 个旧市| 溧阳市| 沙湾县| 桃源县| 永新县| 威宁| 偃师市| 闻喜县| 喜德县| 两当县| 文登市| 定边县| 田东县| 永兴县| 吉木乃县| 丹阳市| 木兰县| 唐山市| 濮阳市| 黄骅市| 陕西省| 承德市| 紫阳县| 郑州市| 柯坪县| 松潘县| 安阳市| 左贡县|