新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于SOPC的扭振信號測量系統實現研究

        基于SOPC的扭振信號測量系統實現研究

        作者: 時間:2009-04-07 來源:網絡 收藏

        設計采用Altera公司的新一代低成本FP―GA―CycloneⅡ系列的EP2C35設計。硬件主要包括FPGA上的NiosⅡ處理器系統、FPGA外的接口和外設兩部分。NiosⅡ處理器系統由Avalon Bus的NiosⅡCPU、串行接口、PIO、PIO控制器、存儲器控制器、定時器以及片上RAM等IP組成。
        外設包括:拾取整形模塊、USB―Blaster-模塊、Flash、SDRAM、LCD模塊、電源模塊、鍵盤等。由光電編碼器拾取后經整形模塊進入NiosⅡ處理器,Clock(系統時鐘)模塊提供50 MHz有源時鐘和用戶自定義的外部時鐘。上位PC用軟件接收RS232發送的連續采樣數據,根據規定好的協議,解碼出需求的數據進行分析。4個按鍵開關和PS/2,用于控制采樣和數據發送,滿足用戶多種控制要求。系統通過PIO可對整形模塊、鍵盤、LCD等外設的控制。存儲器控制器分別與片外Flash和SDRAM連接,對存儲器的訪問。
        2.2 系統硬件定制
        2.2.1 FPGA硬件模塊設計
        硬件電路板測試完成后,需要設計FPGA硬件模塊實現數據采集。模塊各端口列表,如表1所示,信號采集仿真波形,如圖2所示。輸出信號中所有光電編碼器時間是系統時鐘個數的計數值。最后通過軟件模塊計算得到平均扭角、瞬時扭角以及誤差。

        如圖2所示,當in_en高有效時,在WrestFlap_one上升沿,寄存器gride_cnt加l,同時gride_time,circl_time開始計算。當下一個WrestFlap_one上升沿時,寄存器gride_cnt加1,直加到一圈格數,然后又重新開始重復的計算。同時當下一個WrestFlap_one上升沿時gride_time輸出計算了上一圈的光電編碼器一格時間。當gride_cnt一圈數完時,circl_time輸出上一圈的總時間。在WrestFlap_one下降沿,gride_en輸出使能采樣信號,高有效,此信號做為后端fifo寫使能信號。(圖中橢圓區域為一圈光電編碼信號的輸出,仿真中規定一圈有10格,第1格對應的gride_time是207,第2格對應的gride_time是219…。)
        2.2.2 硬件模塊加載及系統構成
        Builder中進行扭振系統配制。添加Ahera自有的豐富IP核,選擇SOPC Builder生成HDL代碼的類型為Verilog,選擇芯片EP2C35,確定系統工作頻率,配制處理器選項,定義處理器地址,配制外圍設備,安排存儲器地址和范圍,為外圍設備和接口設置所需的中斷優先級。同時為優化硬件設計,系統設計了用戶自定義外設模塊。SOPC Build所用模塊如下:
        (1)NIOS II Processor CPU;
        (2)tri_state_bridge(Avalon連接總線);
        (3)lcd_16207_0(LCD顯示);
        (4)sdram,cfi_flash(存儲器);
        (5)button_pio,switch_pio(輸入控制端口);
        (6)Dma(傳輸控制)。
        2.2.3 用戶自定義外設設計
        系統設計自定義模塊是Avalon流模式采集輸入控制器。該控制器設計符合Avalon總線規范,功能是將采集的數據完整送入SDRAM以便存儲以及方便數據處理。系統CPU速率為50 MHz,而采樣速率不定,因此需要FIFO實現前后傳輸的連貫性。然后經過DMA傳輸通道將數據存入SDRAM。Avalon流模式采集輸入控制器硬件結構,控制器模塊分為采集模塊和HFO傳輸模塊兩部分。采集模塊實現數據的采集,其輸入接口有:write_clk(寫時鐘)、write_en(寫使能)與sample_data(16位數據總線)。掛在Avalon總線上的接口有FIFO Q[15:0](數據輸出總線)、chipselect(片選信號)、read_req(讀請求信號)、address(Avalon總線地址)read_empty(讀空信號)、read_clk(讀時鐘)。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 定兴县| 宜州市| 娱乐| 应城市| 琼结县| 芜湖市| 万宁市| 武定县| 监利县| 永吉县| 田阳县| 都兰县| 封丘县| 南汇区| 莱西市| 方城县| 东兰县| 洛宁县| 改则县| 涟源市| 子长县| 永康市| 茂名市| 虎林市| 涟水县| 新田县| 电白县| 绥化市| 青神县| 麻城市| 锡林浩特市| 桦南县| 揭东县| 上饶市| 延安市| 木里| 福清市| 济南市| 唐河县| 砀山县| 防城港市|