內容簡介
《基於Nios II的嵌入式SoPC係統設計與Verilog開發實例》利用Altera FPGA開發闆和Nios II軟核處理器,揭示瞭基於FPGA的嵌入式係統特有的硬件可編程性,采用“做中學”的模式,介紹瞭基於Verilog的嵌入式SoPC設計的基本概念和技術。本書通過許多實例說明軟、硬件的設計和開發過程,並給齣瞭完整的代碼和豐富的實驗題目。
作者簡介
金明錄教授,從1977年開始先後就讀於中國科學技術大學、北京航空航天大學,獲得瞭學士、碩士和博士學位;畢業後先後在日本大阪大學、韓國仁荷大學、韓國電子技術研究院(KETI)、韓國電子通信研究院(ETRI)、澳大利亞西澳大學和美國Intel公司等訪問和工作。 現任大連理工大學電信學部教授,中國通信學會理事,遼寜省通信學會副理事長。
目錄
第1章 嵌入式係統概述 1
1.1 引言 1
1.1.1 嵌入式係統定義 1
1.1.2 示例係統 1
1.2 係統設計需求 2
1.3 嵌入式SoPC係統 3
1.4 本書結構 6
1.5 文獻注釋 6
第1部分 基本數字電路開發
第2章 門級組閤電路 8
2.1 引言 8
2.2 總則 8
2.3 基本詞法元素和數據類型 9
2.4 數據類型 10
2.4.1 四值係統 10
2.4.2 數據類型組 10
2.4.3 數字的錶示方法 11
2.4.4 運算符 12
2.5 程序框架 12
2.5.1 端口聲明 12
2.5.2 程序主體 13
2.5.3 信號聲明 13
2.5.4 另一個實例 14
2.6 結構描述 14
2.7 測試平颱 17
2.8 文獻注釋 19
2.9 推薦實驗 19
2.9.1 門級greater-than電路代碼 19
2.9.2 門級二進製譯碼器代碼 19
第3章 FPGA和EDA軟件概述 20
3.1 FPGA 20
3.1.1 通用FPGA器件概述 20
3.1.2 Altera Cyclone II係列器件
概述 21
3.2 Altera DE1和DE2開發闆概述 23
3.3 開發流程 25
3.4 Quartus II概述 26
3.5 Quartus II簡易教程 27
3.5.1 創建設計工程 29
3.5.2 建立測試平颱進行RTL仿真 33
3.5.3 編譯工程 33
3.5.4 時序分析 34
3.5.5 編程FPGA器件 34
3.6 ModelSim HDL仿真器的簡易
教程 36
3.7 文獻注釋 39
3.8 推薦實驗 40
3.8.1 門級greater-than電路 40
3.8.2 門級二進製譯碼器 40
第4章 RTL組閤電路 41
4.1 運算符 41
4.1.1 算術運算符 42
4.1.2 移位運算符 42
4.1.3 關係運算符和等式運算符 43
4.1.4 位運算符、縮減運算符和
邏輯運算符 43
4.1.5 拼接運算符和復製運算符 44
4.1.6 條件運算符 44
4.1.7 運算符優先級 45
4.1.8 錶達式位長調整 45
4.1.9 z和x的綜閤 46
4.2 組閤邏輯電路的always語句塊 47
4.2.1 基本語法和行為 48
4.2.2 進程賦值語句 48
4.2.3 變量數據類型 49
4.2.4 簡單實例 49
4.3 if語句 50
4.3.1 語法 50
4.3.2 實例 51
4.4 case語句 52
4.4.1 語法 52
4.4.2 實例 53
4.4.3 casez和casex語句 54
4.4.4 全case語句和並行case語句 55
4.5 條件控製結構的路由結構 56
4.5.1 優先級路由網絡 56
4.5.2 多路選擇網絡 57
4.6 always塊的一般編碼原則 58
4.6.1 組閤邏輯電路代碼的常見
錯誤 58
4.6.2 指南 61
4.7 參數和常數 61
4.7.1 常數 61
4.7.2 參數 62
4.7.3 Verilog-1995中參數的使用 64
4.8 設計實例 65
4.8.1 十六進製數的七段LED
譯碼器 65
4.8.2 符號幅值加法器 67
4.8.3 桶形移位器 68
4.8.4 簡易浮點數加法器 70
4.9 文獻注釋 73
4.10 推薦實驗 73
4.10.1 多功能桶形移位器 73
4.10.2 雙優先級編碼器 74
4.10.3 BCD碼增量器 74
4.10.4 浮點數greater-than電路 74
4.10.5 浮點數和有符號整數間的
轉換電路 74
4.10.6 加強的浮點數加法器 75
第5章 常規時序電路 76
5.1 引言 76
5.1.1 D觸發器和寄存器 76
5.1.2 同步係統 77
5.1.3 代碼開發 77
5.2 觸發器和寄存器的HDL代碼 77
5.2.1 D觸發器 78
5.2.2 寄存器 80
5.2.3 寄存器文件 81
5.2.4 SRAM 83
5.3 簡單的設計實例 84
5.3.1 移位寄存器 84
5.3.2 二進製計數器及其變形 86
5.4 時序電路的測試平颱 89
5.5 時序分析 92
5.5.1 時序參數 92
5.5.2 Quartus II中的時序考慮 93
5.6 案例研究 94
5.6.1 秒錶 94
5.6.2 FIFO 緩存器 98
5.7 Cyclone II器件的嵌入式存儲器
模塊 102
5.7.1 DE1開發闆上的存儲器
選項概述 102
5.7.2 嵌入式M4K模塊概述 102
5.7.3 添加嵌入式存儲器模塊的
方法 103
5.7.4 導齣同步單口RAM的HDL
模塊 105
5.7.5 導齣同步簡單雙口RAM的
HDL模塊 106
5.7.6 導齣同步真雙口RAM的
HDL模塊 108
5.7.7 導齣同步ROM的HDL
模塊 109
5.7.8 指定RAM初始值的HDL
模塊 110
5.7.9 FIFO緩存器的再仿真 112
5.8 文獻注釋 113
5.9 推薦實驗 113
5.9.1 可編程方波發生器 113
5.9.2 脈寬調製電路 113
5.9.3 鏇轉方塊電路 113
5.9.4 心跳電路 114
5.9.5 鏇轉的LED標語電路 114
5.9.6 增強型秒錶 114
5.9.7 數據寬度可變的FIFO 114
5.9.8 堆棧 115
5.9.9 基於ROM的符號幅值加
法器 115
5.9.10 基於ROM的溫度轉換 115
第6章 FSM 116
6.1 簡介 116
6.1.1 Mealy和Moore輸齣 116
6.1.2 FSM的錶示方法 116
6.2 FSM代碼開發 118
6.3 設計實例 120
6.3.1 上升沿檢測器 120
6.3.2 去抖電路 125
6.3.3 測試電路 128
6.4 文獻注釋 130
6.5 推薦實驗 130
6.5.1 雙邊沿檢測器 130
6.5.2 另一種去抖電路 130
6.5.3 停車場占用情況計數器 131
第7章 FSMD 132
7.1 引言 132
7.1.1 單一RT操作 132
7.1.2 ASMD圖 133
7.1.3 含寄存器的選擇框 134
7.2 FSMD代碼開發 135
7.2.1 基於RT方法的去抖電路 135
7.2.2 含顯示描述數據通路組件
的代碼 136
7.2.3 含隱式描述數據通路組件
的代碼 139
7.2.4 比較 141
7.3 設計實例 142
7.3.1 斐波那契數電路 142
7.3.2 除法電路 145
7.3.3 二進製―BCD碼轉換電路 148
7.3.4 周期計數器 151
7.3.5 精確的低頻計數器 154
7.4 文獻注釋 157
7.5 推薦實驗 157
7.5.1 另一種去抖電路 157
7.5.2 BCD―二進製碼轉換電路 158
7.5.3 含BCD I/O的斐波那契數
生成電路:設計方法1 158
7.5.4 含BCD I/O的斐波那契數
生成電路:設計方法2 158
7.5.5 自動進位製的低頻計數器 158
7.5.6 反應計時器 159
7.5.7 Babbage差分機模擬電路 160
第8章 Verilog精選主題 161
8.1 阻塞賦值語句和非阻塞賦值
語句 161
8.1.1 概述 161
8.1.2 組閤電路 163
8.1.3 存儲器單元 164
8.1.4 混閤阻塞和非阻塞兩種賦值
語句的時序電路 165
8.2 時序電路的另一種編碼方式 167
8.2.1 二進製計數器 167
8.2.2 FSM 170
8.2.3 FSMD 171
8.2.4 總結 173
8.3 有符號數據類型的使用 173
8.3.1 概述 173
8.3.2 Verilog-1995中的有符號數 174
8.3.3 Verilog-2001中的有符號數 175
8.4 綜閤中函數的使用 175
8.4.1 概述 175
8.4.2 例子 176
8.5 附加的測試平颱開發結構 178
8.5.1 always塊和initial塊 178
8.5.2 進程語句 178
8.5.3 時序控製 180
8.5.4 延時控製 180
8.5.5 事件控製 181
8.5.6 wait語句 181
8.5.7 timescale指令 181
8.5.8 係統函數和係統任務 182
8.5.9 用戶自定義的函數和任務 186
8.5.10 完備的測試平颱的實例 187
8.6 文獻注釋 193
8.7 推薦實驗 193
8.7.1 使用阻塞賦值語句和非阻
塞賦值語句的移位寄存器 193
8.7.2 BCD計數器的另一種編碼
風格 194
8.7.3 FIFO緩存器的另一種編碼
方式 194
8.7.4 斐波那契數生成電路的另一
種編碼方式 194
8.7.5 雙模式比較器 194
8.7.6 增強型二進製計數器的
監測器 194
8.7.7 FIFO緩存器的測試平颱 194
第2部分 基本Nios II軟件開發
第9章 Nios II處理器概述 196
9.1 引言 196
9.2 寄存器文件和ALU 198
9.2.1 寄存器文件 198
9.2.2 ALU 198
9.3 存儲器和I/O結構 198
9.3.1 Nios II的存儲器接口 198
9.3.2 存儲器層次結構概述 198
9.3.3 虛擬存儲器 199
9.3.4 存儲器保護 199
9.3.5 高速緩衝存儲器 199
9.3.6 緊密耦閤存儲器 200
9.3.7 I/O結構 200
9.3.8 互連結構 200
9.4 異常和中斷處理 201
9.5 JTAG調試模塊 201
9.6 文獻注釋 201
9.7 推薦實驗 201
9.7.1 Nios II和MIPS的比較 201
第10章 Nios II係統的引用和底層
訪問 202
10.1 開發流程的再介紹 202
10.1.1 硬件開發 202
10.1.2 軟件開發 202
10.1.3 閃爍LED係統 204
10.2 Nios II硬件生成教程 204
10.2.1 在Quartus II中創建一個
硬件工程 204
10.2.2 創建Nios II係統,生成
HDL代碼 204
10.2.3 創建頂層HDL文件用於
實例化Nios II係統 209
10.2.4 編譯和下載程序 210
10.3 Nios II SBT GUI教程 210
10.3.1 創建BSP庫 210
10.3.2 使用BSP編輯器配置BSP 211
10.3.3 創建用戶應用目錄並添加
應用程序文件 212
10.3.4 生成和運行軟件 212
10.3.5 檢查代碼大小 213
10.4 針對軟硬件一緻性的係統
id核 213
10.5 底層I/O直接訪問 214
10.5.1 C語言指針的復習 215
10.5.2 I/O寄存器的C指針 215
10.6 魯棒的底層I/O訪問 216
10.6.1 system.h 216
10.6.2 alt_types.h 217
10.6.3 io.h 217
10.7 一些關於底層I/O操作的C語
言技巧 218
10.7.1 位處理 218
10.7.2 打包和拆包 219
10.8 軟件開發 219
10.8.1 基本的嵌入式程序框架 219
10.8.2 主程序和任務程序 220
10.9 文獻注釋 221
10.10 推薦實驗 221
10.10.1 追趕LED電路 221
10.10.2 碰撞LED電路 222
10.10.3 脈寬調製電路 222
10.10.4 鏇轉方塊電路 222
10.10.5 心跳電路 222
10.11 完整程序清單 222
第11章 預先設計的Nios II I/O外設 224
11.1 概述 224
11.2 PIO核 224
11.2.1 配置 225
11.2.2 寄存器映射 227
11.2.3 用戶可見寄存器 227
11.3 JTAG UART 核 228
11.3.1 配置 228
11.3.2 寄存器映射 229
11.4 內部定時器核 229
11.4.1 配置 229
11.4.2 寄存器映射 230
11.5 增強型閃爍LED Nios II係統 231
11.5.1 SOPC設計 232
11.5.2 頂層HDL文件 235
11.6 增強型閃爍LED係統軟件
開發 236
11.6.1 設備驅動介紹 236
11.6.2 增強型閃爍LED係統程序
結構 236
11.6.3 主程序 237
11.6.4 函數命名習慣 237
11.7 設備驅動程序 238
11.7.1 PIO外設驅動 238
11.7.2 JATA UART 240
11.7.3 定時器 241
11.8 任務程序 242
11.8.1 函數flashsys_init_v1( ) 242
11.8.2 函數sw_get_command_v1( ) 242
11.8.3 函數jtaguart_disp_msg_v1( ) 243
11.8.4 函數sseg_disp_msg_v1( ) 243
11.8.5 函數led_flash_v1( ) 244
11.9 軟件構建和測試 245
11.10 文獻注釋 245
11.11 推薦實驗 245
11.11.1 閃爍LED係統的
“Uptime”特性 245
11.11.2 不同定時器模式的計數 246
11.11.3 JTAG UART輸入 246
11.11.4 增強型衝撞LED電路 246
11.11.5 鏇轉LED標語電路 246
11.11.6 改進的秒錶 246
11.11.7 停車場占用情況計數器 246
11.11.8 帶按鈕開關控製的反應
時間定時器 247
11.11.9 帶鍵盤控製的反應時間
定時器 247
11.11.10 串行端口通信 247
11.12 完整程序清單 247
第12章 預先設計的Nios II I/O驅動和
HAL API 256
12.1 HAL概述 256
12.1.1 桌麵式嵌入式係統和
準係統嵌入式係統 256
12.1.2 HAL範式 257
12.1.3 設備類彆 258
12.1.4 遵從HAL的設備驅動 258
12.1.5 _regs.h文件 259
12.1.6 基於HAL的初始化序列 260
12.2 BSP 260
12.2.1 概述 260
12.2.2 BSP文件結構 261
12.2.3 BSP配置 262
12.3 基於HAL的閃爍LED程序 263
12.3.1 使用通用I/O設備的
函數 264
12.3.2 使用非通用I/O設備的
函數 266
12.3.3 初始化程序和主程序 266
12.3.4 軟件構建和測試 267
12.4 設備驅動程序考慮 268
12.4.1 I/O訪問法 268
12.4.2 比較 269
12.4.3 本書中的驅動程序 271
12.5 文獻注釋 271
12.6 推薦實驗 271
12.6.1 閃爍LED係統的
“Uptime”特性 271
12.6.2 改進的碰撞LED電路 271
12.6.3 停車場使用情況計數器 271
12.6.4 帶鍵盤控製的反應定時器 271
12.6.5 數字鬧鍾 271
12.7 完整程序清單 272
第13章 中斷及中斷服務程序 275
13.1 HAL框架中的中斷處理 275
13.1.1 概述 275
13.1.2 Nios II處理器的中斷
控製器 276
13.1.3 頂層異常處理程序 276
13.1.4 中斷服務程序 277
13.2 基於中斷的閃爍LED程序 277
13.2.1 定時器核的中斷 278
13.2.2 定時器核的驅動 278
13.2.3 中斷服務程序(版本1) 279
13.2.4 中斷服務程序(版本2) 281
13.3 中斷和調度 282
13.3.1 調度 282
13.3.2 性能 283
13.4 文獻注釋 284
13.5 推薦實驗 285
13.5.1 含按鈕開關ISR程序的
閃爍LED係統 285
13.5.2 ISR驅動的閃爍LED
係統 285
13.5.3 閃爍LED係統中的
“Uptime”特性 285
13.5.4 帶鍵盤控製的反應時間
定時器 285
13.5.5 數字鬧鍾 285
13.6
基於Nios II的嵌入式SoPC係統設計與Verilog開發實例 [Embedded SoPC Design with Nios II Processor and Verilog Examples 下載 mobi epub pdf txt 電子書 格式
基於Nios II的嵌入式SoPC係統設計與Verilog開發實例 [Embedded SoPC Design with Nios II Processor and Verilog Examples 下載 mobi pdf epub txt 電子書 格式 2024
基於Nios II的嵌入式SoPC係統設計與Verilog開發實例 [Embedded SoPC Design with Nios II Processor and Verilog Examples 下載 mobi epub pdf 電子書
基於Nios II的嵌入式SoPC係統設計與Verilog開發實例 [Embedded SoPC Design with Nios II Processor and Verilog Examples mobi epub pdf txt 電子書 格式下載 2024