<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Spoc CPU軟核 Part 4-軟件(即程序員)模型

          Spoc CPU軟核 Part 4-軟件(即程序員)模型

          作者: 時間:2024-01-22 來源: 收藏

          ...或如何將外圍設(shè)備連接到 。

          本文引用地址:http://www.ex-cimer.com/article/202401/455001.htm
          內(nèi)存模型

          0 數(shù)據(jù)存儲器空間深度為 64Kbits。

          • 從 0x0000 到 0x0FFF 的地址保留供內(nèi)部使用。

          • 從 0x1000 到 0xFFFF 的地址可供外部外設(shè)免費使用。讓我們看看如何使用它!

          寫入外圍設(shè)備

          寫入事務(wù)的寬度可以是 1、8、16 或 32 位。

          例如:

          do #0x1000 -> WA0
          do.byte #0x55 -> @         // write the 8-bits value 0x55 to the peripheral residing at address 0x1000

          Spoc0 有 3 個輸出端口,用于寫入外設(shè)。

          地址端口寬 16 位(覆蓋 64K 空間),但數(shù)據(jù)端口只有一個 1 位寬(8、16 或 32 位寬的寫入事務(wù)需要匹配的時鐘周期數(shù))。

          寫入 1 位外設(shè)

          假設(shè)您的 中需要一個標志,并且該標志需要可由 Spoc 寫入。
          在這里,我們使用地址0x3000作為標志的位置。

          reg mySpocFlag;
          always @(posedge clk)
          begin
          	if(WriteEnable & WriteAddress==0x3000) mySpocFlag <= WriteData;
          	end

          將“1”寫入標志的簡單例程是:

          do #0x3000 -> WA0
          do.bit #1 -> @         // write 1 to the flag

          閱讀與寫作類似,但有一個很大的區(qū)別。 讀取需要從提供地址到 Spoc 讀取數(shù)據(jù)的 2 個時鐘延遲。 這允許“流水線化”讀取數(shù)據(jù)路徑。 這樣做是因為否則,較長的數(shù)據(jù)路徑(非流水線)會降低 Spoc 設(shè)計的注冊性能(時鐘速度)。

          例如,讓我們在地址 8x0 處映射 55 位值0x1000,在地址 0x0 處映射 2000xAA。 這些值在這里是固定的,但也可以是中的任何寄存器或引腳(即Spoc可以讀取一些引腳)。
          讀取這些值的簡單例程是:

          wire [7:0] MyValue1 = 8'h55;
          wire [7:0] MyValue2 = 8'hAA;
          
          // we need 2 registers to create 2 levels of clock latency
          reg spoc_ReadData, spoc_ReadData_reg;
          always @(posedge clk)   //  one level of clock latency
          case(spoc_ReadAddress[15:12])    // coarse address decoding
              4'h1: spoc_ReadData_reg <= MyValue1[spoc_ReadAddress[2:0]];
              4'h2: spoc_ReadData_reg <= MyValue2[spoc_ReadAddress[2:0]];
              default: spoc_ReadData_reg <= 1'b0;endcase// second level of clock latency
              always @(posedge clk) spoc_ReadData <= spoc_ReadData_reg;
          do #0x1000 -> RA0do.byte @ -> A        // read 0x55 into accumulator
          do #0x2000 -> RA0
          do.byte @ -> A        // read 0xAA into accumulator

          上一篇:Spoc CPU軟核 Part 3-軟件(即程序員)模型

          下一篇:Spoc CPU軟核(總)



          關(guān)鍵詞: FPGA Spoc

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();