• 
    

    
    

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

      一種基于FPGA的流水線8051IP核的設(shè)計(jì)與實(shí)現(xiàn)

      2014-03-12 18:28:19王發(fā)棟杜慧玲史翔
      現(xiàn)代電子技術(shù) 2014年5期
      關(guān)鍵詞:譯碼器雙通道譯碼

      王發(fā)棟 杜慧玲 史翔

      摘 要: 給出一種基于FPGA的8051MCU的IP核設(shè)計(jì)方案,指令集與標(biāo)準(zhǔn)8051系列處理器完全兼容。采用譯碼——執(zhí)行兩級流水結(jié)構(gòu),并通過了仿真與綜合,理論速度較傳統(tǒng)8051MCU有6~10倍的提升。針對CISC流水線設(shè)計(jì)的復(fù)雜性,提出了一種高效的實(shí)現(xiàn)方案,可以使執(zhí)行結(jié)構(gòu)近滿狀態(tài)運(yùn)行,且簡便有效地解決了傳統(tǒng)流水線所必須面對的三種沖突。設(shè)計(jì)采用Verilog HDL語言描述,并采用ModelsimSE 6.2進(jìn)行功能和時(shí)序驗(yàn)證,將代碼下載到Xilinx公司的FPGA上進(jìn)行物理驗(yàn)證,測試了一個LED流水燈程序,結(jié)果表明軟核達(dá)到了預(yù)期的效果。

      關(guān)鍵字: 8051微處理器; 流水線; FPGA; 控制冒險(xiǎn)

      中圖分類號: TN710?34 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2014)05?0080?03

      0 引 言

      自51單片機(jī)應(yīng)用以來,對其進(jìn)行功能改進(jìn)和性能提升的芯片設(shè)計(jì)層出不窮。但由于其CISC的架構(gòu),對其流水線化始終局限于將CISC指令轉(zhuǎn)換為可以在一周期內(nèi)完成的類RISC指令,然后使用RISC指令流水作業(yè)的方式,這雖然可以讓多條指令同時(shí)執(zhí)行,但增加了譯碼結(jié)構(gòu)的復(fù)雜程度,而且需要復(fù)雜的控制邏輯解決指令同時(shí)執(zhí)行帶來的傳統(tǒng)流水線所必須面對的三種沖突。本文原創(chuàng)性地提出一種新的實(shí)現(xiàn)方案,該方案解決了這三種沖突,且在FPGA的平臺下最大限度地做到填充執(zhí)行結(jié)構(gòu),使得指令可以流暢運(yùn)行。

      1 MCU結(jié)構(gòu)與FPGA平臺

      本文設(shè)計(jì)的8051 IP核是與傳統(tǒng)8051指令集兼容的MCU內(nèi)核,不包含定時(shí)器等模塊但通過總線預(yù)留接口。其結(jié)構(gòu)如圖1所示。

      (1)譯碼器。負(fù)責(zé)將讀入的指令譯成可供流水線執(zhí)行結(jié)構(gòu)執(zhí)行的控制碼,同時(shí)向其發(fā)送執(zhí)行所需的地址和數(shù)據(jù)。它包含4個控制碼隊(duì)列,在譯碼過程中循環(huán)地向四個隊(duì)列中寫入當(dāng)前指令的控制碼,因此可以不必等待指令執(zhí)行完畢再繼續(xù)下一條指令的譯碼。

      (2)流水線執(zhí)行結(jié)構(gòu)。讀取譯碼器發(fā)出的控制碼并進(jìn)行相應(yīng)的操作。主要完成對地址單元的讀寫,數(shù)據(jù)總線的操作和PC的控制。

      (3)ALU算術(shù)邏輯運(yùn)算單元。完成8位整數(shù)的四則運(yùn)算和邏輯運(yùn)算,同時(shí)內(nèi)置了位尋址單元,具有位運(yùn)算的功能。

      (4)256 B的RAM單元。其中低128 B是連續(xù)的RAM空間,高128 B是特殊功能寄存器SFR,被分散在各模塊中。

      (5) 216 B的ROM單元。指令存儲空間,存儲指令和表格。

      設(shè)計(jì)采用Xilinx XCV300芯片,可以使用Xilinx公司提供的BlockRam。它不消耗邏輯資源,且可以實(shí)現(xiàn)雙通道讀寫,增大了內(nèi)部總線的帶寬。同時(shí),該型可以使用Xilinx提供的乘法器和除法器,有效地縮短了乘法和除法操作的時(shí)間。

      2 流水線設(shè)計(jì)及性能分析

      2.1 CISC指令流水化的控制碼方案

      51單片機(jī)采用的是CISC架構(gòu),其指令長度從1~3 B不等,指令執(zhí)行周期也不固定,對其直接進(jìn)行流水化控制邏輯復(fù)雜,難度較大。吸收傳統(tǒng)CISC流水化實(shí)現(xiàn)方案的積極因素,針對FPGA平臺的特定結(jié)構(gòu),對其進(jìn)行改進(jìn)。總體思路是將其轉(zhuǎn)換為可單周期執(zhí)行的指令,稱其為控制碼,將它發(fā)送給流水執(zhí)行部件,但不像傳統(tǒng)流水線的方式去流水,而是進(jìn)行單指令流水,即對指令A(yù)轉(zhuǎn)換的指令[a(0)-a(n)]進(jìn)行流水,在A指令的全部次級指令執(zhí)行完畢前,不允許其他指令進(jìn)入流水線。這樣避免了流水線的結(jié)構(gòu)沖突和數(shù)據(jù)沖突,對于控制沖突,由于PC在執(zhí)行轉(zhuǎn)移指令前不會改變,譯碼仍然是順序譯碼,即相當(dāng)于默認(rèn)跳轉(zhuǎn)不成功。若預(yù)測失敗,則流水線暫停跳轉(zhuǎn)后第一條指令的字節(jié)數(shù)個周期。在中斷到來時(shí),自動生成保存當(dāng)前PC的控制碼,同時(shí)清空控制碼隊(duì)列并跳轉(zhuǎn)到中斷執(zhí)行程序。

      2.2 與傳統(tǒng)流水線方案的對比

      流水線思想的最終目的,實(shí)質(zhì)上是盡量并行化地使用MCU的全部資源。因此這里提出兩條觀點(diǎn):

      (1) 不完全流水線化的執(zhí)行結(jié)構(gòu)若能保證資源的充分使用,因其指令周期較流水化的指令周期短,故其整體效率與流暢的流水線相近。

      (2) 盡力避免流水線沖突使得指令運(yùn)行流暢,不能流暢運(yùn)行的流水線其效率可能低于無流水的執(zhí)行結(jié)構(gòu)。

      前面提到,與傳統(tǒng)流水線不同,這里采取的方案是單指令流水,其實(shí)質(zhì)是將譯碼和執(zhí)行分開,讓兩者并行運(yùn)行。當(dāng)指令周期與所執(zhí)行指令的平均字節(jié)數(shù)即譯碼周期相等時(shí),流水線恰好可以無中斷地運(yùn)行。在FPGA平臺下,通過對控制碼的優(yōu)化設(shè)計(jì),將指令的平均周期控制在兩個時(shí)鐘周期,與51指令集的平均字節(jié)數(shù)相同,符合提出的理論。同時(shí),在譯碼器中設(shè)置了4個控制碼隊(duì)列,保證了在字節(jié)?周期數(shù)不匹配時(shí)能夠有足夠的空間進(jìn)行自動的調(diào)節(jié)。

      3 流水線體系結(jié)構(gòu)

      (1) 控制碼定義

      對其指令行為進(jìn)行分析,給出譯碼器發(fā)送給流水線執(zhí)行結(jié)構(gòu)的控制碼定義。控制碼共19位,其中前3位是控制流水線執(zhí)行器讀取源地址、目的地址及操作數(shù)的。第4~9位控制A通道的尋址和數(shù)據(jù)讀寫,第10~15位控制B通道的尋址和數(shù)據(jù)讀寫。第16、17位控制將立即數(shù)發(fā)送到A或B通道上,第18、19位控制ALU模塊讀取A或B通道上的數(shù)據(jù)。

      (2) 地址、立即數(shù)與其他信息

      指令執(zhí)行需要的地址、立即數(shù)信息由譯碼器發(fā)送給流水線執(zhí)行器,流水線執(zhí)行器根據(jù)控制碼決定是否讀入信息。其中立即數(shù)和目的地址兩個字節(jié)也可以存放控制轉(zhuǎn)移類指令所需的PC地址和偏移地址。

      (3) ALU控制碼

      定義了一組控制碼,發(fā)送到ALU控制其執(zhí)行相關(guān)的運(yùn)算操作。由于ALU運(yùn)算通常在指令執(zhí)行的后期,為縮短指令執(zhí)行周期,采用了提前發(fā)送,內(nèi)部緩存的延遲方式達(dá)到同步。

      (4) 雙通道下的指令時(shí)序設(shè)計(jì)特點(diǎn)

      前面已經(jīng)提到,設(shè)計(jì)所采用的FPGA有雙通道的Blockram,將兩個通道分別稱為A通道和B通道,雙通道增加了系統(tǒng)內(nèi)部總線的帶寬,也給數(shù)據(jù)通路的設(shè)計(jì)帶來了很大的方便。例如對于數(shù)據(jù)傳送類指令,可以在上升沿從A通道讀出數(shù)據(jù),在下降沿向B通道中寫入,使得指令在一個時(shí)鐘周期內(nèi)完成。這也是除指令流水化執(zhí)行以外,提高設(shè)計(jì)性能的一個重要因素。

      4 流水線的實(shí)現(xiàn)與沖突的解決

      流水線結(jié)構(gòu)存在著三種冒險(xiǎn),即結(jié)構(gòu)冒險(xiǎn)、控制冒險(xiǎn)和數(shù)據(jù)冒險(xiǎn)。結(jié)構(gòu)冒險(xiǎn)指不同的指令在同一時(shí)間對同一硬件資源提出了使用的申請,從而產(chǎn)生了沖突;控制冒險(xiǎn)發(fā)生在控制轉(zhuǎn)移類指令所需的條件是流水線中尚未得到的結(jié)果,因此必須等待該結(jié)果得出后才能執(zhí)行;數(shù)據(jù)冒險(xiǎn)則主要指“未寫先讀”,即后面的指令所需的源操作數(shù)是前面指令的目的操作數(shù),因此產(chǎn)生了錯誤。

      在本設(shè)計(jì)中,由于采用單指令流水方案,因此避免了結(jié)構(gòu)冒險(xiǎn)和數(shù)據(jù)冒險(xiǎn)。對于控制冒險(xiǎn),譯碼器的預(yù)測策略是總是認(rèn)為跳轉(zhuǎn)不成功,即不改變PC,繼續(xù)譯碼。若預(yù)測成功,則流水線無停滯地執(zhí)行;若預(yù)測失敗,則譯碼器首先清空全部控制碼隊(duì)列,然后再進(jìn)行新的譯碼,流水線將阻塞新的程序段第一條指令的字節(jié)數(shù)個周期。

      5 設(shè)計(jì)仿真與綜合結(jié)果

      6 結(jié) 語

      本文針對8051的CISC指令集和FPGA平臺的特點(diǎn),提出了一種新的CISC流水化執(zhí)行方案,實(shí)現(xiàn)了51指令的流水化執(zhí)行并解決了流水化所要面對的三種冒險(xiǎn)。設(shè)計(jì)代碼采用Verilog?HDL編寫,仿真測試和綜合的結(jié)果表明,該設(shè)計(jì)邏輯正確,系統(tǒng)參數(shù)達(dá)到了要求。

      參考文獻(xiàn)

      [1] Atmel. AT89C51 8?bit microcontroller with 2K bytes flash [M]. USA: Atmel, 2008.

      [2] 尚笠,葛元慶,周潤德.80C51微處理器嵌入式內(nèi)核的設(shè)計(jì)研究[J].微電子學(xué),2000,30(1):28?30.

      [3] PATTERSON D A, HENNESSY J L.計(jì)算機(jī)組成與設(shè)計(jì)?軟件硬件接口[M].鄭緯民,譯.2版.北京:機(jī)械工業(yè)出版社,2012.

      [4] Xilinx. Dual?port block memory core v6.3 [EB/OL]. [2005?08?31]. http://www.xilinx.com/support/documentation/ip_documentation/dp_block_mem.pdf.

      [5] THIMMANNAGARI C M R. CPU design: answers to frequently asked questions [M]. USA: Springer, 2005.

      [6] 李亞民.計(jì)算機(jī)組成原理與系統(tǒng)結(jié)構(gòu)[M].北京:清華大學(xué)出版社,1999.

      [7] 周寧寧,劉勝.基于FPGA技術(shù)的CPU的設(shè)計(jì)與實(shí)現(xiàn)[J].南京郵電學(xué)院學(xué)報(bào),2003,23(1):77?79.

      [8] 孟現(xiàn)元,錢偉康.FPGA嵌入式系統(tǒng)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2007.

      [9] 倪繼利,陳曦,李輝.CPU源代碼分析與芯片設(shè)計(jì)及Linux移植[M].北京:電子工業(yè)出版社,2007.

      [10] SIMIC J, TERAN S. 8051 core specification [DB/OL].(2001?09?25)[2013?01?21]. http: //www.opencores.org.

      前面已經(jīng)提到,設(shè)計(jì)所采用的FPGA有雙通道的Blockram,將兩個通道分別稱為A通道和B通道,雙通道增加了系統(tǒng)內(nèi)部總線的帶寬,也給數(shù)據(jù)通路的設(shè)計(jì)帶來了很大的方便。例如對于數(shù)據(jù)傳送類指令,可以在上升沿從A通道讀出數(shù)據(jù),在下降沿向B通道中寫入,使得指令在一個時(shí)鐘周期內(nèi)完成。這也是除指令流水化執(zhí)行以外,提高設(shè)計(jì)性能的一個重要因素。

      4 流水線的實(shí)現(xiàn)與沖突的解決

      流水線結(jié)構(gòu)存在著三種冒險(xiǎn),即結(jié)構(gòu)冒險(xiǎn)、控制冒險(xiǎn)和數(shù)據(jù)冒險(xiǎn)。結(jié)構(gòu)冒險(xiǎn)指不同的指令在同一時(shí)間對同一硬件資源提出了使用的申請,從而產(chǎn)生了沖突;控制冒險(xiǎn)發(fā)生在控制轉(zhuǎn)移類指令所需的條件是流水線中尚未得到的結(jié)果,因此必須等待該結(jié)果得出后才能執(zhí)行;數(shù)據(jù)冒險(xiǎn)則主要指“未寫先讀”,即后面的指令所需的源操作數(shù)是前面指令的目的操作數(shù),因此產(chǎn)生了錯誤。

      在本設(shè)計(jì)中,由于采用單指令流水方案,因此避免了結(jié)構(gòu)冒險(xiǎn)和數(shù)據(jù)冒險(xiǎn)。對于控制冒險(xiǎn),譯碼器的預(yù)測策略是總是認(rèn)為跳轉(zhuǎn)不成功,即不改變PC,繼續(xù)譯碼。若預(yù)測成功,則流水線無停滯地執(zhí)行;若預(yù)測失敗,則譯碼器首先清空全部控制碼隊(duì)列,然后再進(jìn)行新的譯碼,流水線將阻塞新的程序段第一條指令的字節(jié)數(shù)個周期。

      5 設(shè)計(jì)仿真與綜合結(jié)果

      6 結(jié) 語

      本文針對8051的CISC指令集和FPGA平臺的特點(diǎn),提出了一種新的CISC流水化執(zhí)行方案,實(shí)現(xiàn)了51指令的流水化執(zhí)行并解決了流水化所要面對的三種冒險(xiǎn)。設(shè)計(jì)代碼采用Verilog?HDL編寫,仿真測試和綜合的結(jié)果表明,該設(shè)計(jì)邏輯正確,系統(tǒng)參數(shù)達(dá)到了要求。

      參考文獻(xiàn)

      [1] Atmel. AT89C51 8?bit microcontroller with 2K bytes flash [M]. USA: Atmel, 2008.

      [2] 尚笠,葛元慶,周潤德.80C51微處理器嵌入式內(nèi)核的設(shè)計(jì)研究[J].微電子學(xué),2000,30(1):28?30.

      [3] PATTERSON D A, HENNESSY J L.計(jì)算機(jī)組成與設(shè)計(jì)?軟件硬件接口[M].鄭緯民,譯.2版.北京:機(jī)械工業(yè)出版社,2012.

      [4] Xilinx. Dual?port block memory core v6.3 [EB/OL]. [2005?08?31]. http://www.xilinx.com/support/documentation/ip_documentation/dp_block_mem.pdf.

      [5] THIMMANNAGARI C M R. CPU design: answers to frequently asked questions [M]. USA: Springer, 2005.

      [6] 李亞民.計(jì)算機(jī)組成原理與系統(tǒng)結(jié)構(gòu)[M].北京:清華大學(xué)出版社,1999.

      [7] 周寧寧,劉勝.基于FPGA技術(shù)的CPU的設(shè)計(jì)與實(shí)現(xiàn)[J].南京郵電學(xué)院學(xué)報(bào),2003,23(1):77?79.

      [8] 孟現(xiàn)元,錢偉康.FPGA嵌入式系統(tǒng)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2007.

      [9] 倪繼利,陳曦,李輝.CPU源代碼分析與芯片設(shè)計(jì)及Linux移植[M].北京:電子工業(yè)出版社,2007.

      [10] SIMIC J, TERAN S. 8051 core specification [DB/OL].(2001?09?25)[2013?01?21]. http: //www.opencores.org.

      前面已經(jīng)提到,設(shè)計(jì)所采用的FPGA有雙通道的Blockram,將兩個通道分別稱為A通道和B通道,雙通道增加了系統(tǒng)內(nèi)部總線的帶寬,也給數(shù)據(jù)通路的設(shè)計(jì)帶來了很大的方便。例如對于數(shù)據(jù)傳送類指令,可以在上升沿從A通道讀出數(shù)據(jù),在下降沿向B通道中寫入,使得指令在一個時(shí)鐘周期內(nèi)完成。這也是除指令流水化執(zhí)行以外,提高設(shè)計(jì)性能的一個重要因素。

      4 流水線的實(shí)現(xiàn)與沖突的解決

      流水線結(jié)構(gòu)存在著三種冒險(xiǎn),即結(jié)構(gòu)冒險(xiǎn)、控制冒險(xiǎn)和數(shù)據(jù)冒險(xiǎn)。結(jié)構(gòu)冒險(xiǎn)指不同的指令在同一時(shí)間對同一硬件資源提出了使用的申請,從而產(chǎn)生了沖突;控制冒險(xiǎn)發(fā)生在控制轉(zhuǎn)移類指令所需的條件是流水線中尚未得到的結(jié)果,因此必須等待該結(jié)果得出后才能執(zhí)行;數(shù)據(jù)冒險(xiǎn)則主要指“未寫先讀”,即后面的指令所需的源操作數(shù)是前面指令的目的操作數(shù),因此產(chǎn)生了錯誤。

      在本設(shè)計(jì)中,由于采用單指令流水方案,因此避免了結(jié)構(gòu)冒險(xiǎn)和數(shù)據(jù)冒險(xiǎn)。對于控制冒險(xiǎn),譯碼器的預(yù)測策略是總是認(rèn)為跳轉(zhuǎn)不成功,即不改變PC,繼續(xù)譯碼。若預(yù)測成功,則流水線無停滯地執(zhí)行;若預(yù)測失敗,則譯碼器首先清空全部控制碼隊(duì)列,然后再進(jìn)行新的譯碼,流水線將阻塞新的程序段第一條指令的字節(jié)數(shù)個周期。

      5 設(shè)計(jì)仿真與綜合結(jié)果

      6 結(jié) 語

      本文針對8051的CISC指令集和FPGA平臺的特點(diǎn),提出了一種新的CISC流水化執(zhí)行方案,實(shí)現(xiàn)了51指令的流水化執(zhí)行并解決了流水化所要面對的三種冒險(xiǎn)。設(shè)計(jì)代碼采用Verilog?HDL編寫,仿真測試和綜合的結(jié)果表明,該設(shè)計(jì)邏輯正確,系統(tǒng)參數(shù)達(dá)到了要求。

      參考文獻(xiàn)

      [1] Atmel. AT89C51 8?bit microcontroller with 2K bytes flash [M]. USA: Atmel, 2008.

      [2] 尚笠,葛元慶,周潤德.80C51微處理器嵌入式內(nèi)核的設(shè)計(jì)研究[J].微電子學(xué),2000,30(1):28?30.

      [3] PATTERSON D A, HENNESSY J L.計(jì)算機(jī)組成與設(shè)計(jì)?軟件硬件接口[M].鄭緯民,譯.2版.北京:機(jī)械工業(yè)出版社,2012.

      [4] Xilinx. Dual?port block memory core v6.3 [EB/OL]. [2005?08?31]. http://www.xilinx.com/support/documentation/ip_documentation/dp_block_mem.pdf.

      [5] THIMMANNAGARI C M R. CPU design: answers to frequently asked questions [M]. USA: Springer, 2005.

      [6] 李亞民.計(jì)算機(jī)組成原理與系統(tǒng)結(jié)構(gòu)[M].北京:清華大學(xué)出版社,1999.

      [7] 周寧寧,劉勝.基于FPGA技術(shù)的CPU的設(shè)計(jì)與實(shí)現(xiàn)[J].南京郵電學(xué)院學(xué)報(bào),2003,23(1):77?79.

      [8] 孟現(xiàn)元,錢偉康.FPGA嵌入式系統(tǒng)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2007.

      [9] 倪繼利,陳曦,李輝.CPU源代碼分析與芯片設(shè)計(jì)及Linux移植[M].北京:電子工業(yè)出版社,2007.

      [10] SIMIC J, TERAN S. 8051 core specification [DB/OL].(2001?09?25)[2013?01?21]. http: //www.opencores.org.

      猜你喜歡
      譯碼器雙通道譯碼
      近端胃切除雙通道重建及全胃切除術(shù)用于胃上部癌根治術(shù)的療效
      基于校正搜索寬度的極化碼譯碼算法研究
      糾錯模式可配置的NAND Flash BCH譯碼器設(shè)計(jì)
      跟蹤導(dǎo)練(一)5
      從霍爾的編碼譯碼理論看彈幕的譯碼
      新聞傳播(2016年3期)2016-07-12 12:55:27
      LDPC 碼改進(jìn)高速譯碼算法
      遙測遙控(2015年2期)2015-04-23 08:15:19
      采用6.25mm×6.25mm×1.8mm LGA封裝的雙通道2.5A、單通道5A超薄微型模塊穩(wěn)壓器
      HINOC2.0系統(tǒng)中高速LDPC譯碼器結(jié)構(gòu)設(shè)計(jì)
      電力線通信中LDPC譯碼器的優(yōu)化設(shè)計(jì)與實(shí)現(xiàn)
      基于概率裁剪的球形譯碼算法
      泰安市| 友谊县| 灌阳县| 威海市| 金秀| 托里县| 安图县| 民县| 留坝县| 岚皋县| 怀安县| 城固县| 当阳市| 都匀市| 白河县| 柘城县| 定边县| 嘉善县| 三门县| 大庆市| 临漳县| 三原县| 六盘水市| 绥江县| 南部县| 中山市| 区。| 赤水市| 新郑市| 河源市| 翁源县| 祁阳县| 泉州市| 车险| 邵东县| 抚州市| 芒康县| 柘荣县| 长武县| 乌鲁木齐县| 开平市|