第四章 SOPC 雛型系統軟硬體共同設計
4.2. ECG 雛型系統之硬體設計
圖 4.1. 雛型系統架構圖
本雛型系統以CSEP_SDK 為基礎的開發平台,搭配 Terasic (友晶 科技)彩色觸控板與 ECG 訊號擷取電路板(請參閱第四章),以 Altera Quartus II 為雛型系統之軟硬體共同設計開發環境。在硬體核心設計 上,先建立一Nios2 核心模組(如圖 4.1 所示),該核心模組具有 ADC DATA IN、SEG7、LTM、SD CARD 等週邊元件。同時在軟體設計上,
則以Altera Nios II IDE 為軟體開發平台進行程式設計。而本雛型系統 訊號輸入端為ADC 模組(即 AD7685),必須經由 Nios2 的 ADC DATA IN 來控制 ADC 模組,抓取其 ECG 訊號轉換資料並存進 SDRAM,
待SDRAM 儲存完畢後,由 LTM 模組顯示,或進行 ECG 訊號之時域 分析顯示,然後再依據使用者的需求決定是否儲存至SD 卡,以便日 後閱覽。
4.2.1. 建立 Nios2 Core Module
本系統的核心硬體架構之設計,以Altera Quartus II 來建置而成 的,其步驟如下:
步驟一:為了產生CPU 和 SDRAM 的 100MHz 和 LTM 的 40MHz 新增PLL,其設定方法如圖 4.2a~4.2d;
圖 4.2a. 新增 PLL
圖 4.2b. 設定 CPU 的 CLK (100MHz) Click”Output Clocks”
Select”clk_0”
Clock duty cycle(%)=50.00 Multiplication=2
Division=1
Phase Shift= 0.00 ps
圖 4.2c. 設定 SDRAM 的 CLK(100MHz,角度-65o)
圖 4.2d. 設定 LTM 的 CLK(40MHz) Click”Output Clocks”
Select”clk_2”
Clock duty cycle(%)=50.00 Enter out clock Frequency:40MHz
Click”Output Clocks”
Select”clk_1”
Clock duty cycle(%)=50.00 Multiplication=2
Division=1
Phase Shift= -65.00 deg
步驟二:NIOS2 必須有儲存單元,而新增 SDRAM Controller,其
Nios II/s(Standard):
高性能 Architecture:
Chip select = 1 Bands = 4
因為 CSEP_SDK 有兩顆 32MB
的SDRAM,所以在這的設定是
64MB 的參數。
步驟四:為了電腦能與NIOS2 溝通,而新增 JTAG,其設定方法如 圖 4.5;
圖 4.5. 設定 JTAG 參數
步驟五:為了將心電圖量測後的資料儲存至 SD CARD,而新增 SD Controller,其設定方法如圖 4.6;
圖 4.6. 新增 SD_Card_Controller IP CORE 使用預設值
使用預設值
步驟六:為抓取有效的 ADC 資料新增 ECG_ISR,其設定方法如圖 4.7;
圖 4.7. 新增 ECG_ISR
步驟七:為ADC 輸入端,新增 ECG_DATA,其設定方法如圖 4.8;
圖 4.8. 新增 ECG_DATA Width = 24 bits
Direction = Input port only Width = 1 bits
Direction = Input port only
Edge capture register:
Synchronously capture
→Rising edge
Interrupt:
Generate IRQ
→Edge
步驟八:控制ADC 轉換,而新增 ECG_FULL,其設定方法如圖 4.9;
圖 4.9. 新增 ECG_FULL
步驟九:判斷是否有觸碰到 LTM,而新增 TP_ISR,其設定方法如 圖4.10[16];
圖 4.10. 新增 TP_ISR Width = 1 bits
Direction = Input port only
Edge capture register:
Synchronously capture
→Rising edge
Interrupt:
Generate IRQ
→Edge Width = 1 bits
Direction = Output port only
步驟十:為接收觸控螢幕回傳的座標,而新增TP_DATA PIO 輸入 腳,其設定方法如圖4.11[16];
圖 4.11. 新增 TP_DATA
步驟十一:控制SDRAM 資料搬移,而新增 SGDMA Controller,
其設定方法如圖4.12a~圖 4.12b;
圖 4.12a. 設定 SGDMA Controller 參數 Transfer mode = Memory to Stream
Data width = 64 Source error width Data transfer FIFO depth = 2
Width = 24 bits
Direction = Input port only
圖 4.12b. SGDMA 與 SDRAM 連接示意圖
步驟十二:SDRAM 搬移時,需要暫存器,而新增 On-Chip Memory,
其設定方法如圖4.13;
圖 4.13. 設定 On-Chip Memory 參數 Depth = 128
Clock setting:
Dual clock mode
FIFO Implementation:
Construct FIFO from embedded memory block
Input: Output:
Avalon-ST Avalon-ST
Bits per symbot = 8 bits Symbols per beat = 8 symbols Error width = 0 bits
Channel width = 0 bits 將 SGDMA 與 SDRAM 連接
步驟十三:LTM 顯示需進行畫素轉換,而新增 Pixel Converter IP CORE,其設定方法如圖 4.14;
圖 4.14. 新增 Pixel Converter IP CORE
步驟十四:影像顯示控制設定,需新增VGA_SINK 來控制,其設 定方法如圖4.15[17];
圖 4.15. 新增 VGA_SINK IP CORE Parameters:
Symbols_Per_Beat = 1 Bits_Per_Symbol = 24 Ready_Latency = 0 Max_Channel = 0 H_Disp = 800 H_From_Porch = 40 H_Sync = 128 H_Back_Porch = 88 V_Disp = 600 V_From_Porch = 1 V_Sync = 4
V_Back_Porch = 23
步驟十五:設定IP 連接阜,其設定方法如圖 4.16a~圖 4.16f;
圖 4.16a. SGDMA 與 FIFO 連接示意圖
圖 4.16b. Insert Avalon-ST Adapters 1.選擇 SGDMA 的 OUT
2.Insert Avalon-ST Adapters SGDMA 連接至 FIFO
圖 4.16c. SGDMA 與 Avalon-ST Timeing Adapter 連接示意圖
圖 4.16d. Insert Avalon-ST Adapters
圖 4.16e. 重新命名 IP 名稱 Avalon-ST Timing Adapter(SGDMA to FIFO)
Rename:lcd_ta_sgdma_to_fifo
Avalon-ST Timing Adapter(FIFO to DFA) Rename:lcd_ta_fifo_to_dfa
Avalon-ST Data Format Adapter Rename:lcd_64_to_32_bits_dfa
1.選擇FIFO 的 OUT 2.Insert Avalon-ST Adapters
SGDMA 連接至Avalon-ST
Timeing Adapter
圖 4.16f. 重新設定 IP Clock 步驟十六:System Generation→Generate
步驟十七:新增Nios2 Core Module 至 Quartus II 專案,並新增各 IO PIN,並且完成腳位命名及連線操作,如圖 4.17 所示。
步驟十八:執行tcl 檔完成晶片及腳位規畫(請參見附錄 A.tcl 檔)。
步驟十九:Compilation 完成。
圖 4.17. Nios2 Core Module 建置完成圖 lcd_ta_sgdma_to_fifo
Clock:cpu_clk lcd_ta_pixel_fifo
Clock in:cpu_clk Clock out:vga_clk lcd_ta_fifo_to_dfa
Clock:vga_clk lcd_64_to_32_bits_dfa
Clock:vga_clk lcd_pixel_converter
Clock:vga_clk VGA
Clock:vga_clk
4.2.2. ADC Module
圖 4.18. ADC 範例電路
依圖4.18 所示[9],此為 AD7685 的範例電路,該 IC 本身分為 兩個模式,分別為3-WIRE 和 4-WIRE,而本文所採用的為 3-WIRE 模式,如圖4.19 所示[9],為本文採用之 3-WIRE 應用電路設計。
圖 4.19. ADC 3-WIRE 電路設計
3-WIRE 的電路設計是將 SDO 接一個提升電阻至 VIO,此模式 通常用於單一個AD7685 連接至 SPI 界面上,而它的控制時序圖,
如圖 4.20 所示,時序值請參考表 4-2[9],在控制上主要分為
Conversion 和 Acquisition 兩個狀態,當 CNV 由低準位轉成高準位 的同時,在正緣的時候,啟動轉換,此為Conversion 週期,過程中 不再受 CNV 的任何狀態控制,轉換時間至少要大於 tconv,直到轉 換結束前必須將訊號設定為 LOW,其目的主要是為了可以控制多 顆的ADC,而在轉換過程中的 SDO 均為高阻抗,當轉換時間大於 tconv立即從 Conversion 週期轉換到 Acquisition 週期,輸出的 SDO 由高阻抗轉換成低準位,並延遲一個SCK 的週期,在 SCK 第二個 週期開始,負緣對應到的 SDO 的資料為有效資料,且由 MSB→LSB 依序輸出,直到最後一筆資料送完後,再將 CNV 轉換成高準位,
完成一個AD 轉換。
圖 4.20. ADC 3-WIRE 時序圖
表 4-2. AD7685 時間表
Parameter Symbol Min Max Unit
Conversion Time tconv 2.2 2.4 us
Acquisition Time tACQ 1.6 us
Total Time tcyc 4 us
SCK (CS Mode) tsck 25 ns
Sample Rate 250 KHz
圖4.21~4.23 為 VHDL 撰寫完之後的模擬驗證圖(VHDL 程式 碼將附置於附錄B)。
圖 4.21. 輸入資料為”1000 0000 0000 0000”輸出資料為 8000H
圖 4.22. 輸入資料為”0000 0000 0000 0001”輸出資料為 0001H
圖 4.23. 輸入資料為”0000 0000 1000 0000”輸出資料為 0080H Conversion Time Acquisition Time Out Conversion Time Acquisition Time Out Conversion Time Acquisition Time Out
圖 4.24. 雛型系統硬體設計
圖 4.25. 雛型系統硬體資源使用統計