本書以Xilinx公司Zynq-7000系列SoC和ADI公司AD9361射頻收發器為核心定制的硬件平臺SDR-AI-Z7為基礎,以GNU Radio軟件和MATLAB軟件為設計平臺,詳細介紹了軟件定義無線電(Software Defined Radio,SDR)的原理,以及基于不同軟件平臺實現SDR通信系統的方法。 本書在介紹SDR的原理和基于SDR技術實現通信系統時,為讀者展現了不同實現方法對通信系統的性能、靈活性、成本和功耗方面的影響。本書共13章,主要內容包括軟件定義無線電技術基礎、軟件定義無線電平臺硬件和軟件架構、軟件定義無線電平臺開發環境的構建、通信信號處理的基礎知識、正交調制和復指數的基礎知識、前向糾錯的基本原理和實現、軟件定義無線電系統同步原理和實現、信道估計與均衡原理和實現、FM和FSK的GNU Radio實現、BPSK和QPSK無線傳輸的Simulink實現、OFDM無線傳輸的Simulink實現、802.11a無線傳輸的MATLAB實現,以及ADS-B信號接收Simulink實現。此外,本書的附錄提供了AM的GNU Radio實現和QPSK的GNU Radio實現等。 本書理論和實踐并重,通過采用不同的軟件框架實現SDR通信系統,從多個角度詮釋了軟件定義無線電中“軟件”的本質含義。
何賓,知名的嵌入式和EDA技術專家,長期從事電子設計自動化方面的教學和科研工作,與全球多家知名的半導體廠商和EDA工具廠商密切合作。已經出版電子信息方面的著作共40余部,內容涵蓋電路仿真、電路設計、FPGA、數字信號處理、單片機、嵌入式系統等。典型的代表作有《模擬電子系統設計指南(基礎篇):從半導體、分立元件到TI集成電路的分析與實現》、《模擬電子系統設計指南(實踐篇):從半導體、分立元件到TI集成電路的分析與實現》、《Xilinx Zynq-7000嵌入式系統設計與實現-基于ARM Cortex-A9雙核處理器和Vivado的設計方法》、《Altium Designer17一體化設計標準教程-從仿真原理和PCB設計到單片機系統》、《STC8系列單片機開發指南:面向處理器、程序設計和操作系統的分析與應用》等。
目錄
第1章 軟件定義無線電技術基礎1
1.1 無線電頻譜及分配1
1.1.1 無線電頻譜的定義1
1.1.2 無線電頻譜分配3
1.1.3 頻譜許可和合法使用4
1.1.4 頻譜政策4
1.2 自由空間路徑損耗5
1.3 軟件定義無線電的發展歷史6
1.4 通信系統的分層模型9
1.4.1 開放系統互連模型9
1.4.2 TCP/IP模型11
1.5 無線通信標準12
1.5.1 通信標準的定義和重要性12
1.5.2 Wi-Fi的發展歷程14
1.5.3 蜂窩網絡的發展歷程15
1.6 SDR實現通信協議棧16
1.6.1 MAC和PHY16
1.6.2 上層17
1.6.3 無線物理層17
第2章 軟件定義無線電平臺硬件和軟件架構19
2.1 軟件定義無線電架構的演進19
2.1.1 基帶采樣/模擬中頻基帶采樣SDR19
2.1.2 數字中頻采樣SDR20
2.1.3 帶可調諧RF的基帶采樣SDR20
2.1.4 直接射頻SDR22
2.2 可重構軟件定義無線電平臺硬件架構23
2.2.1 Xilinx Zynq-7000異構架構SoC23
2.2.2 ADI的AD9361射頻收發器23
2.2.3 軟件無線電硬件開發平臺27
2.2.4 Vivado底層硬件框架29
2.3 使用軟件無線電框架的必要性49
2.4 ADI的IIO子系統51
2.5 GNU Radio軟件無線電開發框架55
2.5.1 GNU Radio的發展歷史55
2.5.2 GNU Radio的功能56
2.5.3 GNU Radio的初衷57
2.5.4 GNU Radio中的典型塊59
2.6 MathWorks軟件無線電開發框架60
2.6.1 AD9361 Simulink模型60
2.6.2 通用的通信和DSP系統工具箱功能63
2.6.3 面向硬件可編程邏輯的Simulink工具流程64
2.6.4 SDR設計中的軟硬件協同設計方法的框架64
2.6.5 SDR設計中的軟硬件協同設計方法的實現65
2.7 動態可重配置軟件無線電開發框架68
2.7.1 動態可重配置技術與SoC結構的結合68
2.7.2 動態可重配置技術的核心單元69
第3章 軟件定義無線電平臺開發環境的構建71
3.1 Vivado設計套件的下載和安裝71
3.1.1 Vivado設計套件的設計流程71
3.1.2 Vivado設計套件的下載73
3.1.3 Vivado設計套件的安裝75
3.1.4 添加許可文件79
3.1.5 添加板支持包81
3.2 GNU Radio軟件的下載和安裝81
3.2.1 GNU Radio軟件的下載81
3.2.2 GNU Radio軟件的安裝83
3.3 MATLAB軟件的下載和安裝86
3.3.1 MATLAB軟件的下載86
3.3.2 MATLAB軟件的安裝87
3.3.3 安裝Simulink軟件支持包93
3.3.4 添加HDL Coder工具補丁包96
3.3.5 安裝定制硬件平臺的軟件支持包97
第4章 通信信號處理的基礎知識98
4.1 調制和解調98
4.2 射頻術語和參數98
4.3 多速率信號處理99
4.3.1 多速率采樣的原因99
4.3.2 過采樣ADC和DAC100
4.3.3 抽取101
4.3.4 插值102
4.3.5 半帶和L帶濾波器103
4.3.6 抽取和插值級聯104
4.4 基帶調制(位到符號)106
4.4.1 正交調制與符號空間維度106
4.4.2 幅移鍵控107
4.4.3 正交幅度調制107
4.4.4 相移鍵控109
4.4.5 其他調制方案110
4.5 基帶解調(符號到位)110
4.5.1 符號判決111
4.5.2 加性高斯白噪聲信道111
4.5.3 誤差矢量幅度113
4.5.4 比特錯誤率113
4.6 無線信道113
4.6.1 信道效應114
4.6.2 解決方法117
4.7 脈沖整形與匹配濾波118
4.7.1 符號作為脈沖119
4.7.2 脈沖整形要求和實現119
4.7.3 平方根升余弦匹配濾波120
4.7.4 最大效果點121
4.8 比特錯誤率分析121
第5章 正交調制和復指數的基礎知識123
5.1 信號的表示123
5.1.1 模擬和數字信號123
5.1.2 實數和復數信號123
5.1.3 歐拉公式124
5.1.4 使用復數頻譜在頻域中查看實信號125
5.2 幅度調制和解調129
5.2.1 雙邊帶抑制載波幅度調制130
5.2.2 幅度解調131
5.2.3 帶有相位誤差的幅度解調132
5.3 正交幅度調制和解調133
5.3.1 正交調制的三角表示133
5.3.2 正交解調的三角表示134
5.3.3 帶相位移動的正交解調135
5.4 復數符號的正交調制和解調136
5.4.1 復指數表示法的正交調制136
5.4.2 復指數表示法的正交解調137
5.5 復指數解調的頻譜表示138
5.6 接收機的頻率偏移和校正141
第6章 前向糾錯的基本原理和實現143
6.1 前向糾錯概論143
6.1.1 前向糾錯的背景143
6.1.2 前向糾錯的基本原理143
6.1.3 最大似然譯碼146
6.2 漢明碼146
6.2.1 漢明碼的參數146
6.2.2 最小距離的定義及其和糾錯檢錯能力的關系147
6.2.3 一致監督矩陣147
6.2.4 生成矩陣149
6.2.5 線性分組碼的編碼149
6.2.6 線性分組碼的譯碼150
6.3 循環碼153
6.3.1 循環碼的定義和生成多項式154
6.3.2 監督多項式和監督矩陣156
6.3.3 (n,k)循環碼的編碼157
6.3.4 (n,k)循環碼的譯碼161
6.4 卷積碼167
6.5 維特比譯碼器169
6.6 BCJR、Log-MAP和Max-Log-MAP算法172
6.6.1 BCJR算法172
6.6.2 Log-MAP和MAX-Log-MAP算法174
6.7 卷積碼的性能175
6.8 衰落信道的前向糾錯176
6.9 Turbo碼177
6.10 LDPC碼181
6.10.1 編碼181
6.10.2 譯碼183
6.10.3 5G NR標準中的LDPC碼186
第7章 軟件定義無線電系統同步原理和實現188
7.1 信號的同步問題188
7.2 定時同步189
7.2.1 符號定時原理189
7.2.2 符號定時恢復結構189
7.2.3 定時誤差檢測器190
7.2.4 定時分辨率196
7.3 載波同步196
7.3.1 載波偏移197
7.3.2 粗頻率校正197
7.3.3 細頻率校正198
7.4 幀同步204
7.4.1 幀的常見格式205
7.4.2 巴克碼205
7.4.3 Zadoff-Chu序列209
7.4.4 高萊互補序列211
第8章 信道估計與均衡原理和實現213
8.1 多徑干擾213
8.2 信道估計214
8.3 均衡器217
8.3.1 線性均衡器217
8.3.2 非線性均衡器220
第9章 FM和FSK的GNU Radio實現223
9.1 FM的原理和相關參數223
9.1.1 FM的原理223
9.1.2 FM的相關參數224
9.2 系統設計環境支持225
9.3 FM發射系統的設計226
9.3.1 啟動GNU Radio軟件226
9.3.2 添加Wav File Source塊227
9.3.3 添加WBFM Transmit塊228
9.3.4 添加QT GUI Time Sink塊229
9.3.5 添加QT GUI Sink塊231
9.3.6 添加FMComms2/3/4 Sink塊232
9.3.7 連接流程圖中的塊233
9.3.8 保存設計234
9.4 FM接收系統的設計234
9.4.1 啟動GNU Radio軟件234
9.4.2 添加FMComms2/3/4 Source塊235
9.4.3 添加QT GUI Sink塊236
9.4.4 添加Low Pass Filter塊(一)237
9.4.5 添加WBFM Receive塊238
9.4.6 添加Multiply Const塊239
9.4.7 添加Low Pass Filter塊(二)241
9.4.8 添加Audio Sink塊241
9.4.9 連接流程圖中的塊242
9.4.10 保存設計244
9.5 系統測試和驗證244
9.5.1 鏡像文件的復制244
9.5.2 安裝PuTTY軟件工具246
9.5.3 硬件平臺的設置和啟動247
9.5.4 配置網絡參數249
9.5.5 FM無線傳輸系統的硬件測試250
9.6 FSK的原理252
9.6.1 2-FSK的原理252
9.6.2 其他FSK方式254
9.7 FSK原理仿真255
9.7.1 系統參數設置257
9.7.2 信源生成子系統257
9.7.3 FSK調制子系統258
9.7.4 FSK解調與驗證子系統258
9.7.5 FSK原理仿真260
9.8 FSK發射機的設計260
9.8.1 FSK發射機的參數262
9.8.2 FSK發射機的結構262
9.9 FSK接收機的設計263
9.9.1 FSK解調子系統的結構265
9.9.2 FSK數據恢復子系統的結構265
9.10 FSK文件傳輸系統測試266
9.10.1 測試前的準備工作266
9.10.2 系統測試結果267
第10章 BPSK和QPSK無線傳輸的Simulink實現271
10.1 系統設計結構271
10.2 BPSK和QPSK基帶處理器的設計272
10.2.1 創建新的Simulink設計模型272
10.2.2 符號映射276
10.2.3 整形濾波279
10.2.4 自動增益控制280
10.2.5 粗頻率校正281
10.2.6 細頻率校正284
10.2.7 時序同步288
10.2.8 幀同步290
10.2.9 抽樣判決292
10.3 基帶處理模塊功能仿真與系統仿真292
10.3.1 QPSK仿真環境的構建292
10.3.2 查看系統采樣率294
10.3.3 按模塊功能仿真295
10.3.4 系統功能仿真301
10.3.5 BPSK功能仿真301
10.4 編譯HDL模型與軟件接口模型303
10.4.1 編譯HDL模型303
10.4.2 軟件接口模型設計312
10.4.3 軟件模型的設計316
10.5 單個SDR硬件平臺上運行發送和接收測試317
10.5.1 硬件設備連接317
10.5.2 發射端與接收端的IP設置318
10.5.3 執行MATLAB腳本318
10.5.4 運行設計319
10.5.5 可編程邏輯資源利用率321
10.6 編譯為獨立的可執行文件并運行321
10.6.1 編譯獨立的可執行文件321
10.6.2 加載設計及運行可執行文件322
第11章 OFDM無線傳輸的Simulink實現326
11.1 OFDM的產生背景326
11.1.1 OFDM技術的起因326
11.1.2 OFDM的動機327
11.2 多載波調制330
11.3 OFDM的原理332
11.3.1 OFDM調制和解調332
11.3.2 循環前綴334
11.4 OFDM系統框架336
1