• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于龍芯開源CPU的計(jì)算機(jī)組成原理實(shí)驗(yàn)課程改革

    2018-06-27 07:53:08王俊昌成韶錦李德國(guó)
    計(jì)算機(jī)教育 2018年6期
    關(guān)鍵詞:龍芯寄存器開源

    王俊昌,成韶錦 ,楊 昆,李德國(guó)

    (1.南京郵電大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 南京 210023;2.龍芯中科技術(shù)有限公司,北京 100089)

    0 引 言

    計(jì)算機(jī)組成原理是一門偏硬件的計(jì)算機(jī)基礎(chǔ)核心課程,該課程對(duì)學(xué)生了解計(jì)算機(jī)各組成部件及其內(nèi)部運(yùn)行機(jī)制具有重要意義。目前,國(guó)內(nèi)高校普遍采用的教材介紹了計(jì)算機(jī)指令集、CPU設(shè)計(jì)、存儲(chǔ)器層次結(jié)構(gòu)、I/O系統(tǒng)、總線系統(tǒng)等計(jì)算機(jī)核心組成部件[1-2]。該課程涉及計(jì)算機(jī)的多個(gè)部件,概念較為抽象,因此其實(shí)驗(yàn)環(huán)節(jié)尤為重要。只有通過動(dòng)手充分了解計(jì)算機(jī)各部件的內(nèi)部運(yùn)行機(jī)制,才能加深學(xué)生對(duì)計(jì)算機(jī)組成知識(shí)的理解,提升學(xué)生的實(shí)踐動(dòng)手能力,并為其今后的學(xué)習(xí)和深造打好堅(jiān)實(shí)的基礎(chǔ)。

    目前高校開設(shè)計(jì)算機(jī)組成原理實(shí)驗(yàn)課的主要方式如下。

    (1)基于硬件的實(shí)驗(yàn)方式[3-4]:給定實(shí)驗(yàn)步驟,學(xué)生通過插拔線和撥動(dòng)開關(guān)進(jìn)行實(shí)驗(yàn),該類實(shí)驗(yàn)方式在國(guó)內(nèi)較為常見。這種實(shí)驗(yàn)方式的優(yōu)點(diǎn)是讓學(xué)生接觸真實(shí)的硬件電路,增進(jìn)學(xué)生對(duì)電路走線的理解,缺點(diǎn)是學(xué)生只能按照預(yù)設(shè)步驟,機(jī)械地完成連線,難以突破實(shí)驗(yàn)箱的限制,無法了解硬件內(nèi)部的運(yùn)行機(jī)制。

    (2)基于軟件的實(shí)驗(yàn)方式:采用某類硬件平臺(tái)模擬器,學(xué)生通過在模擬器中運(yùn)行代碼,達(dá)到間接觀察硬件平臺(tái)的效果。這種方式的優(yōu)點(diǎn)是簡(jiǎn)單易上手,缺點(diǎn)是學(xué)生無法動(dòng)手操作,很難形成對(duì)計(jì)算機(jī)硬件的直觀理解。

    隨著計(jì)算機(jī)硬件的飛速發(fā)展,特別是以人工智能和大數(shù)據(jù)處理為代表的新興方向?qū)W(xué)生的計(jì)算機(jī)硬件知識(shí)水平和動(dòng)手能力提出了更高的要求。傳統(tǒng)的計(jì)算機(jī)組成原理實(shí)驗(yàn)方式已不能滿足學(xué)生對(duì)計(jì)算機(jī)組成原理的認(rèn)知需要。近年來有不少高校開始探索使用現(xiàn)場(chǎng)可編程門陣列(FPGA)作為計(jì)算機(jī)組成原理課程的實(shí)驗(yàn)平臺(tái)[5-6]。與傳統(tǒng)實(shí)驗(yàn)設(shè)備相比,基于FPGA的組成原理實(shí)驗(yàn)平臺(tái)具有可編程、直觀、學(xué)生動(dòng)手程度高等優(yōu)點(diǎn)。然而,基于FPGA的實(shí)驗(yàn)平臺(tái)存在對(duì)學(xué)生的軟硬件預(yù)備知識(shí)要求高、設(shè)備調(diào)試復(fù)雜、技術(shù)支持不到位等問題,高校對(duì)是否采用基于FPGA的實(shí)驗(yàn)平臺(tái)存在爭(zhēng)議。

    硬件實(shí)驗(yàn)平臺(tái)對(duì)于計(jì)算機(jī)組成原理課程的教學(xué)效果具有重要意義,因此,如何選定合適的實(shí)驗(yàn)平臺(tái)是計(jì)算機(jī)組成原理課程教學(xué)改革的重點(diǎn)和難點(diǎn)問題。為此,筆者基于龍芯開源CPU的教學(xué)實(shí)驗(yàn)平臺(tái)[7],就計(jì)算機(jī)組成原理課程開展了一系列教學(xué)改革嘗試,并取得了較好的效果。

    1 基于龍芯開源CPU的計(jì)算機(jī)組成原理實(shí)驗(yàn)平臺(tái)

    1.1 硬件平臺(tái)

    實(shí)驗(yàn)用到的龍芯實(shí)驗(yàn)箱型號(hào)為L(zhǎng)S-CPU-EXB-002,主要由以下部件組成:Spartan6-XC6SLX150-FGG676 FPGA芯片、雙色LED燈、單色LED燈、LED點(diǎn)陣、數(shù)碼管、下載JTAG接口、UART接口、VGA接口、LAN接口、USB接口、PS2接口、電源開關(guān)、撥碼開關(guān)、脈沖開關(guān)、4×4鍵盤、復(fù)位鍵、LCD顯示屏。實(shí)驗(yàn)箱LS-CPU-EXB-002見圖1。

    圖1 實(shí)驗(yàn)箱LS-CPU-EXB-002

    1.2 軟件平臺(tái)

    實(shí)驗(yàn)使用的EDA軟件為ISE Design Suite[8]。ISE Design Suite14.7涉及FPGA設(shè)計(jì)的各個(gè)應(yīng)用領(lǐng)域,包括邏輯開發(fā)、數(shù)字信號(hào)處理及嵌入式系統(tǒng)開發(fā)等,主要包括ISE Foundation、嵌入式開發(fā)套件、System Generator DSP開發(fā)工具、ChipScope Pro分析儀、PlanAhead設(shè)計(jì)和分析工具等組成部分。該軟件平臺(tái)的使用流程包括:①代碼編輯;②用PlanAhead配置管腳,生成bit流文件;③用ChipScope燒寫FPGA板,驗(yàn)證功能是否正確;④根據(jù)結(jié)果對(duì)邏輯進(jìn)行優(yōu)化修改。

    2 實(shí)驗(yàn)設(shè)計(jì)

    基于龍芯開源CPU的計(jì)算機(jī)組成原理實(shí)驗(yàn)包含8個(gè)難度依次增加的實(shí)驗(yàn):①定點(diǎn)加法;②定點(diǎn)乘法;③寄存器堆實(shí)驗(yàn);④ALU模塊實(shí)現(xiàn);⑤存儲(chǔ)器實(shí)現(xiàn);⑥單周期CPU;⑦多周期CPU;⑧靜態(tài)五級(jí)流水CPU實(shí)現(xiàn)。實(shí)驗(yàn)①及實(shí)驗(yàn)②的目的在于讓學(xué)生熟悉軟件與硬件平臺(tái),掌握利用龍芯實(shí)驗(yàn)箱各項(xiàng)功能開發(fā)組成原理實(shí)驗(yàn)的方法,并熟悉開發(fā)語言verilog。實(shí)驗(yàn)③、④、⑤旨在讓學(xué)生熟悉CPU內(nèi)部構(gòu)造的設(shè)計(jì),鞏固理論知識(shí),為后續(xù)設(shè)計(jì)完整CPU打下基礎(chǔ)。最后3個(gè)實(shí)驗(yàn)由淺入深,逐步引導(dǎo)學(xué)生編寫五級(jí)流水CPU。通過層層深入的教學(xué)模式,引導(dǎo)學(xué)生積極動(dòng)手,從零開始設(shè)計(jì)并實(shí)現(xiàn)一個(gè)支持五級(jí)CPU流水線的真實(shí)處理器。

    2.1 定點(diǎn)加法實(shí)驗(yàn)

    本實(shí)驗(yàn)的主要目的是讓學(xué)生熟悉使用ISE軟件開發(fā)FPGA的流程,幫助學(xué)生鞏固電路設(shè)計(jì)方面的知識(shí),引導(dǎo)學(xué)生學(xué)習(xí)verilog語言。實(shí)驗(yàn)流程為:①邏輯設(shè)計(jì),編寫代碼;②仿真驗(yàn)證;③綜合布局布線;④用Chipscope下載到試驗(yàn)板上進(jìn)行功能驗(yàn)證。

    2.2 定點(diǎn)乘法實(shí)驗(yàn)

    定點(diǎn)乘法實(shí)驗(yàn)的目的為讓學(xué)生理解定點(diǎn)乘法中算法的工作原理,掌握實(shí)現(xiàn)較復(fù)雜算法的技巧。該實(shí)驗(yàn)最終實(shí)現(xiàn)一個(gè)基本的迭代乘法算法,理解并正確實(shí)現(xiàn)該算法對(duì)后續(xù)實(shí)驗(yàn)有極大的幫助。算法基本原理為:乘數(shù)每次右移一位,根據(jù)最低位,判斷是加被乘數(shù)移位后的值還是加零,不停地累加,直到得到最終乘積。原理圖如圖2所示。

    圖2 迭代乘法算法原理圖

    2.3 寄存器堆的實(shí)現(xiàn)

    從實(shí)驗(yàn)3開始,學(xué)生開始轉(zhuǎn)入CPU內(nèi)部基本結(jié)構(gòu)的實(shí)現(xiàn)。寄存器堆的實(shí)現(xiàn)旨在建立一個(gè)能存放32個(gè)32位寄存器的存儲(chǔ)設(shè)備。學(xué)生最終實(shí)現(xiàn)的存儲(chǔ)設(shè)備設(shè)置有2個(gè)讀端口、2個(gè)輸出端口、1個(gè)寫地址端口、1個(gè)寫數(shù)據(jù)端口;控制信號(hào)方面,存在1個(gè)寫使能信號(hào),控制寄存器堆的輸入。在寄存器堆進(jìn)行工作時(shí)輸出標(biāo)志的寄存器中的值。

    2.4 ALU模塊的實(shí)現(xiàn)

    本實(shí)驗(yàn)設(shè)計(jì)的ALU是一個(gè)簡(jiǎn)單的能夠處理兩個(gè)32位操作數(shù)的算數(shù)模塊,具體支持加法、減法、有符號(hào)比較、無符號(hào)比較、按位與、按位或、按位或非、按位異或、邏輯左移、邏輯右移、算術(shù)右移和高位加載。該實(shí)驗(yàn)?zāi)軌驇椭鷮W(xué)生對(duì)CPU核心部件ALU的工作原理有較深入的理解。

    2.5 存儲(chǔ)器實(shí)現(xiàn)

    存儲(chǔ)器實(shí)驗(yàn)的主要目的是讓學(xué)生了解只讀存儲(chǔ)器ROM和隨機(jī)存取存儲(chǔ)器RAM的基本原理,理解同步RAM和異步RAM的區(qū)別。存儲(chǔ)器實(shí)驗(yàn)的一種方式是調(diào)用Xilinx庫(kù)IP直接輸入?yún)?shù)使用,也可以自行設(shè)計(jì)存儲(chǔ)器,使用設(shè)計(jì)寄存器堆的設(shè)計(jì)方法,直接定義需要的32位寄存器,并且設(shè)計(jì)好端口。在教學(xué)實(shí)踐中,筆者鼓勵(lì)學(xué)生嘗試自行設(shè)計(jì),從而加深學(xué)生對(duì)存儲(chǔ)器工作原理的認(rèn)識(shí)。

    2.6 單周期CPU的實(shí)現(xiàn)

    單周期CPU實(shí)驗(yàn)中,一個(gè)CPU周期實(shí)現(xiàn)一條指令,故時(shí)鐘的設(shè)定應(yīng)為執(zhí)行時(shí)間最長(zhǎng)的指令。該實(shí)驗(yàn)要求學(xué)生設(shè)計(jì)一個(gè)支持16條MIPS指令的CPU。CPU具體流程為:在一個(gè)周期內(nèi),根據(jù)PC值從指令ROM中讀出相應(yīng)的指令,將指令譯碼后從寄存器堆中讀出需要的操作數(shù),送往ALU模塊,ALU模塊運(yùn)算得到結(jié)果。但若是跳轉(zhuǎn)指令,則不需要存儲(chǔ)器設(shè)備,此時(shí)需要修改PC值。單周期CPU的大致框圖如圖3所示。

    2.7 多周期CPU的實(shí)現(xiàn)

    該實(shí)驗(yàn)是對(duì)單周期CPU實(shí)驗(yàn)的拔高,也為流水線CPU實(shí)驗(yàn)打下基礎(chǔ)。該實(shí)驗(yàn)要求學(xué)生實(shí)現(xiàn)30多條指令。該實(shí)驗(yàn)的難點(diǎn)在于CPU需要支持多周期執(zhí)行,即一條指令被分為多個(gè)步驟,在每個(gè)周期內(nèi)只做一部分,如取指、譯碼、執(zhí)行、訪存、寫回。與單周期CPU相比,多周期CPU中每個(gè)部分使用單獨(dú)的模塊編寫,通過設(shè)計(jì)外圍模塊調(diào)用,而且只有前一個(gè)狀態(tài)結(jié)束時(shí),才能進(jìn)行下一步操作,以此實(shí)現(xiàn)多周期操作。該實(shí)驗(yàn)對(duì)學(xué)生的理論知識(shí)和實(shí)際動(dòng)手能力有較高要求,且程序調(diào)試較復(fù)雜。為此,在教學(xué)實(shí)踐中,筆者將該實(shí)驗(yàn)設(shè)置為可選,鼓勵(lì)學(xué)有余力的學(xué)生完成。

    圖3 單周期CPU的大致框圖

    2.8 靜態(tài)五級(jí)流水CPU的實(shí)現(xiàn)

    最后一個(gè)實(shí)驗(yàn)要求學(xué)生設(shè)計(jì)一個(gè)五級(jí)流水CPU。該CPU的主體部分使用2.7節(jié)完成的多周期CPU,但此處要求將指令拓展到40條以上,并在此前基礎(chǔ)上加入延時(shí)槽技術(shù)。此外,該實(shí)驗(yàn)在每個(gè)模塊中加入allow_in信號(hào)和over信號(hào),以此使該模塊不斷運(yùn)作,從而實(shí)現(xiàn)流水線效果。該實(shí)驗(yàn)使用了大量的控制信號(hào)來維持流水線的秩序,要求學(xué)生對(duì)CPU功能結(jié)構(gòu)有深入的了解,并能把各模塊聯(lián)系起來,最后還要通過仿真器分析設(shè)計(jì)結(jié)果,做出改進(jìn)。在教學(xué)實(shí)踐中,筆者將該實(shí)驗(yàn)設(shè)置為可選,鼓勵(lì)學(xué)有余力的學(xué)生完成。

    3 基于龍芯開源CPU的計(jì)算機(jī)組成原理實(shí)驗(yàn)教改效果

    近年來,龍芯公司通過硬件開源,以教學(xué)生“造”計(jì)算機(jī)為理念,通過將龍芯CPU面向合作院校進(jìn)行開源,力圖使學(xué)生能夠動(dòng)手實(shí)現(xiàn)“設(shè)計(jì)真實(shí)處理器”,提升計(jì)算機(jī)組成原理教學(xué)水平。筆者所在南京郵電大學(xué)通過引入基于龍芯開源CPU的教學(xué)實(shí)驗(yàn)平臺(tái),就計(jì)算機(jī)組成原理開展一系列教學(xué)改革嘗試。在實(shí)驗(yàn)過程中,通過指導(dǎo)學(xué)生動(dòng)手實(shí)踐,從零開始逐步完成一個(gè)可真實(shí)運(yùn)行的CPU核心,激發(fā)了學(xué)生的學(xué)習(xí)主動(dòng)性,鞏固了學(xué)生的課堂知識(shí),使學(xué)生對(duì)所學(xué)知識(shí)融會(huì)貫通,取得了較好的教學(xué)成果?;邶埿鹃_源CPU的計(jì)算機(jī)組成原理實(shí)驗(yàn)平臺(tái)已在南京郵電大學(xué)的2014、2015級(jí)計(jì)算機(jī)專業(yè)本科生中試用,在教學(xué)過程中取得了較好的教學(xué)效果。

    3.1 教改成效

    教學(xué)過程中采用的教材為白中英編寫的《計(jì)算機(jī)組成原理》。在課堂教學(xué)過程中,筆者發(fā)現(xiàn)學(xué)生對(duì)ALU、流水線技術(shù)、總線系統(tǒng)等知識(shí)缺乏直觀認(rèn)識(shí),例如:①對(duì)小于置位運(yùn)算的原理不清晰,不熟悉ALU的內(nèi)部構(gòu)造;②對(duì)CPU控制部件工作原理難以理解;③對(duì)總線的內(nèi)部結(jié)構(gòu)不明確。通過在龍芯實(shí)驗(yàn)平臺(tái)上進(jìn)行相關(guān)實(shí)驗(yàn),學(xué)生逐漸熟悉了ALU的內(nèi)部結(jié)構(gòu),掌握了32位無符號(hào)比較小于置位運(yùn)算,對(duì)指令譯碼和流水線停頓等概念有了更深入的理解。經(jīng)過一個(gè)學(xué)期的實(shí)踐,學(xué)生對(duì)新實(shí)驗(yàn)平臺(tái)的反映較好。

    此外,龍芯具有較好的社會(huì)影響力,配套培訓(xùn)較多,學(xué)生學(xué)習(xí)熱情高。例如,2017年6月,龍芯公司在南京航空航天大學(xué)進(jìn)行了全國(guó)大學(xué)生計(jì)算機(jī)系統(tǒng)能力培養(yǎng)大賽的相關(guān)培訓(xùn)[8],在培訓(xùn)過程中,龍芯開發(fā)人員介紹了龍芯開源CPU的設(shè)計(jì)流程,對(duì)實(shí)驗(yàn)箱進(jìn)行了演示,詳細(xì)介紹了所用的MIPS指令集,極大地提高了學(xué)生對(duì)于計(jì)算機(jī)整體系統(tǒng)的認(rèn)識(shí)。

    3.2 存在的問題和思考

    在采用龍芯實(shí)驗(yàn)平臺(tái)的過程中,筆者也發(fā)現(xiàn)了一些問題,例如:

    (1)該實(shí)驗(yàn)平臺(tái)采用了FPGA,但FPGA對(duì)于本科學(xué)生來說門檻較高,要求學(xué)生具有一定的基礎(chǔ)知識(shí),例如:計(jì)算機(jī)組成原理、數(shù)字電路與系統(tǒng)設(shè)計(jì)、操作系統(tǒng)等。此外,學(xué)生此前并未接觸過編程語言verilog。針對(duì)該問題,筆者有選擇地給學(xué)生介紹了《Xilinx FPGA開發(fā)實(shí)用教程》等書籍中的部分內(nèi)容,較好地解決了該問題。因此,筆者認(rèn)為在采用該平臺(tái)的過程中,應(yīng)有計(jì)劃地安排學(xué)生提前選修數(shù)字電路、FPGA開發(fā)等先導(dǎo)課程。

    (2)使用龍芯實(shí)驗(yàn)平臺(tái)調(diào)試代碼的過程中涉及邏輯和語法兩方面的內(nèi)容,過程復(fù)雜,而學(xué)校的實(shí)驗(yàn)課通常安排得較短、較分散,學(xué)生難以在課上解決所有問題。例如部分學(xué)生在完成五級(jí)流水CPU實(shí)驗(yàn)的過程中,由于缺乏對(duì)延遲槽的理解,導(dǎo)致MIPS二進(jìn)制執(zhí)行文件不能在CPU中正確運(yùn)行,而這一問題的解決往往需要較長(zhǎng)時(shí)間。因此,在采用該平臺(tái)的過程中,應(yīng)考慮協(xié)調(diào)教務(wù)部門,將課程的實(shí)驗(yàn)課集中安排,以實(shí)踐周的方式進(jìn)行更有利于學(xué)生集中時(shí)間完成實(shí)驗(yàn)。

    4 結(jié) 語

    基于龍芯開源CPU的計(jì)算機(jī)組成原理實(shí)驗(yàn)平臺(tái)在南京郵電大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)2014級(jí)、2015級(jí)進(jìn)行了推廣,極大地調(diào)動(dòng)了學(xué)生的學(xué)習(xí)積極性,取得了較好的教學(xué)效果。在實(shí)驗(yàn)過程中,通過動(dòng)手實(shí)踐,學(xué)生往往能夠發(fā)現(xiàn)一些新的問題和意想不到的困難,通過克服困難尋求解決方案,學(xué)生的動(dòng)手能力得到較明顯的提升。此外,在今后的教學(xué)實(shí)踐中筆者還會(huì)進(jìn)行一些優(yōu)化和調(diào)整,例如結(jié)合操作系統(tǒng)、數(shù)字電路等課設(shè)的實(shí)驗(yàn)課程,形成更全面、更系統(tǒng)的實(shí)驗(yàn)組合,以便更加全面地覆蓋計(jì)算機(jī)系統(tǒng)學(xué)科的理論知識(shí)。

    [1]Patterson D A, Hennessy J L. Computer organization and design: The hardware/software interface[M]. 北京: 機(jī)械工業(yè)出版社,2014: 1-23.

    [2]白中英, 戴志濤. 計(jì)算機(jī)組成原理[M]. 5版. 北京: 科學(xué)出版社, 2013: 1-30.

    [3]丁紅勝. 面向計(jì)算機(jī)系統(tǒng)能力培養(yǎng)的計(jì)算機(jī)組成原理實(shí)驗(yàn)教學(xué)[J]. 計(jì)算機(jī)教育, 2016(7): 20-24.

    [4]李麗萍, 盛琳陽. 基于EDA技術(shù)的計(jì)算機(jī)組成原理實(shí)驗(yàn)課開放性教學(xué)模式研究[J]. 計(jì)算機(jī)教育, 2010(10): 55-57.

    [5]周寧寧, 程春玲. 基于FPGA技術(shù)的計(jì)算機(jī)組成原理實(shí)驗(yàn)系統(tǒng)[J]. 現(xiàn)代電子技術(shù), 2005(1): 23-25.

    [6]吳迪, 謝雪炎, 吳賀俊. 基于FPGA的計(jì)算機(jī)組成原理實(shí)驗(yàn)教學(xué)探索[J]. 計(jì)算機(jī)教育, 2014(18): 30-34.

    [7]中科龍芯. 龍芯開源CPU項(xiàng)目[EB/OL]. [2017-11-15]. http://www.loongnix.org/index.php.

    [8]中科龍芯. 全國(guó)并行應(yīng)用挑戰(zhàn)賽[EB/OL]. [2017-11-15]. http://www.pac-hpc.com/.

    猜你喜歡
    龍芯寄存器開源
    基于國(guó)產(chǎn)化龍芯的動(dòng)環(huán)數(shù)據(jù)采集系統(tǒng)
    Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
    五毛錢能買多少頭牛
    分簇結(jié)構(gòu)向量寄存器分配策略研究*
    大家說:開源、人工智能及創(chuàng)新
    開源中國(guó)開源世界高峰論壇圓桌會(huì)議縱論開源與互聯(lián)網(wǎng)+創(chuàng)新2.0
    “龍芯之父”胡偉武
    開源計(jì)算機(jī)輔助翻譯工具研究
    龍芯發(fā)布新一代處理器產(chǎn)品
    高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
    汉川市| 莎车县| 钟祥市| 连江县| 灵台县| 清苑县| 宁安市| 浙江省| 深州市| 富蕴县| 巴青县| 华池县| 三亚市| 南乐县| 五台县| 得荣县| 泉州市| 夏河县| 镇赉县| 延安市| 宁海县| 金堂县| 鸡泽县| 辉南县| 育儿| 白沙| 江陵县| 高陵县| 福清市| 龙川县| 靖边县| 怀化市| 改则县| 霍邱县| 平遥县| 乌兰县| 新沂市| 咸阳市| 长丰县| 桓仁| 威海市|