• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    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.czjhyjcfj.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

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 阳西县| 辰溪县| 施秉县| 克什克腾旗| 金乡县| 新余市| 沈阳市| 萨迦县| 乌拉特中旗| 柘城县| 江达县| 南川市| 海原县| 沐川县| 策勒县| 赣榆县| 仁化县| 武邑县| 同江市| 华坪县| 和林格尔县| 都兰县| 格尔木市| 靖宇县| 海城市| 台中县| 铜川市| 报价| 武鸣县| 天柱县| 泗洪县| 武宁县| 阿勒泰市| 河北区| 永丰县| 天津市| 荥经县| 宝山区| 涟水县| 伊春市| 兴隆县|