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

          新聞中心

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

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/142464.htm

            然后,把兼容ARM9處理器內核例化到程序中。
            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 )

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

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

            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]

            然后是例化了一個串口模塊。這個模塊是筆者寫一個串并轉換發送字節的模塊。只需要把tx_vld/tx_data[7:0]寫入相應的字節,那么它就會把tx_data[7:0]串行通過UART_TX發送出去。同理,如果收到字節,則會啟動rx_vld/rx_data[7:0],表示收到一個字節。rx_vld和tx_vld都是高電平使能信號。在rx_vld等于1時,表示收到的有效字節位于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可以區分此次讀操作該選擇哪一個數據。這當然是通過ram_addr來區分的。



          關鍵詞: ROM RAM

          評論


          相關推薦

          技術專區

          關閉
          看屁屁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); })();