新聞中心

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

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

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

        ...或如何將外圍設備連接到

        本文引用地址:http://www.104case.com/article/202401/455001.htm
        內存模型

        0 數據存儲器空間深度為 64Kbits。

        • 從 0x0000 到 0x0FFF 的地址保留供內部使用。

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

        寫入外圍設備

        寫入事務的寬度可以是 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 個輸出端口,用于寫入外設。

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

        寫入 1 位外設

        假設您的 中需要一個標志,并且該標志需要可由 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

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

        例如,讓我們在地址 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軟核(總)



        關鍵詞: FPGA Spoc

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 射阳县| 仁怀市| 华蓥市| 常山县| 曲沃县| 裕民县| 郴州市| 环江| 香河县| 天峨县| 横山县| 清流县| 溆浦县| 太白县| 山阳县| 龙陵县| 黎城县| 漠河县| 鄂伦春自治旗| 玉山县| 中牟县| 瑞安市| 济南市| 抚松县| 屏东市| 台北县| 霍城县| 桂林市| 绍兴县| 保亭| 那坡县| 东乡| 平江县| 阜新| 米脂县| 平谷区| 信宜市| 日喀则市| 新乡市| 渝中区| 宜君县|