日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 使用LX9開發(fā)板對兼容ARM9處理器的開源軟核進行Dhrystone Benchmark測試(下)

          使用LX9開發(fā)板對兼容ARM9處理器的開源軟核進行Dhrystone Benchmark測試(下)

          作者:free-arm(網(wǎng)名) 時間:2013-02-27 來源:電子產(chǎn)品世界 收藏

            我們把EN_KEY引入設計中,讓它連接入處理器內(nèi)核的cpu_en輸入端口中。接下來,用一個計數(shù)器作為IRQ輸入中斷的觸發(fā)源。我們知道進行Dhrystone benchmark測試時,必須有一個實時時鐘來讓程序知道完成dhrystone運算花了多長時間。在Realview MDK提供的dhrystone例程中,里面有句注釋是這樣的:/* Timer Counter 0 Interrupt executes each 10ms @ 40 MHz Crystal Clock */,也就是每10 ms即要發(fā)送一次irq中斷脈沖。

          本文引用地址:http://yuyingmama.com.cn/article/142464.htm

            然后,把兼容ARM9處理器內(nèi)核例化到程序中。
            reg [14:0] wr_addr;
            always @ (posedge clk or posedge rst )
            if ( rst )
            wr_addr <= 14'b0;
            else if (cpu_en)
            wr_addr <= 14'b0;
            else if (rx_vld)
            wr_addr <= wr_addr + 1'b1;
            else;
            rom u_rom (
            .clka ( clk ),
            .ena ( cpu_en ? rom_en : rx_vld ),
            .wea ( cpu_en ? 4'b0 : (1'b1<
            .addra ( cpu_en ? rom_addr[14:2] : wr_addr[14:2] ),
            .dina ( {4{rx_data[7:0]}} ),
            .douta ( rom_data ),
            .clkb ( clk ),
            .enb ( ram_cen & ~ram_wen & (ram_addr[31:28]==4'h0 ) ),
            .web ( 4'b0 ),
            .addrb ( ram_addr[14:2] ),
            .dinb ( 32'h0 ),
            .doutb ( ram_rdata_rom )

            后續(xù)的程序是對模塊的描述。模塊存放著程序,它除了供應給處理器內(nèi)核的指令池外,還包括數(shù)據(jù)池對模塊的訪問。另外,在編程態(tài),從串口送入的字節(jié),會依次寫入ROM模塊中,地址是不斷遞增的。采用wr_addr作為編程ROM的地址,不斷遞加。

            接下來是模塊的例化。模塊是在地址ram_addr[31:28]等于4時,可以訪問。模塊可以進行讀寫,讀寫操作由ram_wen控制。Wea可以控制RAM模塊的字節(jié)使能。

            ram u_ram (
            .clka ( clk ),
            .ena ( ram_cen&(ram_addr[31:28]==4'h4) ),
            .wea ( ram_wen ? ram_flag : 4'b0 ), // Bus [3 : 0]
            .addra ( ram_addr[13:2] ), // Bus [11 : 0]
            .dina ( ram_wdata ), // Bus [31 : 0]
            .douta ( ram_rdata_ram )
            ); // Bus [31 : 0]

            然后是例化了一個串口模塊。這個模塊是筆者寫一個串并轉(zhuǎn)換發(fā)送字節(jié)的模塊。只需要把tx_vld/tx_data[7:0]寫入相應的字節(jié),那么它就會把tx_data[7:0]串行通過UART_TX發(fā)送出去。同理,如果收到字節(jié),則會啟動rx_vld/rx_data[7:0],表示收到一個字節(jié)。rx_vld和tx_vld都是高電平使能信號。在rx_vld等于1時,表示收到的有效字節(jié)位于rx_data中。

            rxtx u_uart (
            .clk ( clk ),
            .rst ( rst ),
            .rx ( UART_RX ),
            .tx_vld ( tx_vld ),
            .tx_data ( tx_data ),
            .rx_vld ( rx_vld ),
            .rx_data ( rx_data ),
            .tx ( UART_TX ),
            .txrdy ( txrdy )

            然后是讀選擇信號。由于會對ROM、RAM、串口這三個不同模塊進行讀寫,rd_sel可以區(qū)分此次讀操作該選擇哪一個數(shù)據(jù)。這當然是通過ram_addr來區(qū)分的。



          關鍵詞: ROM RAM

          評論


          相關推薦

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

          關閉