内容简介
探索基本的数字电路和数字逻辑
?学习Mojo、PapilioOne和Elbert2开发板的特性
?设置计算机并深入学习Verilog编程
?了解ISEDesignSuite和用户约束文件
?理解和应用模块Verilog编程方法
?使用开发板GPIO端口生成电子脉冲
?控制伺服电机并创建自己的声音
?附接VGATV或计算机显示器并生成视频
作者简介
SimonMonk拥有控制和计算机科学学士学位,以及软件工程博士学位。Simon是一名全职作家,迄今已撰写多《FPGA编程从零开始 使用Verilog》籍,包括ProgrammingArduino、ProgrammingRaspberryPi和HackingElectronics,并参与撰写PracticalElectronicsforInventors。Simon的个人网站是MonkMakes.com,Twitter是@simonmonk2。目录
目录
第1章逻辑1
1.1逻辑门1
1.1.1非门2
1.1.2与门3
1.1.3或门3
1.1.4与非门和或非门4
1.1.5异或门5
1.2二进制6
1.3添加逻辑8
1.4触发器9
1.5移位寄存器11
1.6二进制计数器12
1.7小结13
第2章FPGA15
2.1FPGA的工作原理15
2.2Elbert217
2.3Mojo18
2.4Papilio20
2.5软件设置22
2.5.1安装ISE22
2.5.2安装Elbert软件24
2.5.3安装Mojo软件25
2.5.4安装Papilio软件26
2.6项目文件26
2.7小结27
第3章绘制逻辑29
3.1数据选择器示例29
3.1.1步骤1:创建一个新项目30
3.1.2步骤2:创建一个新的原理图34
3.1.3步骤3:添加逻辑符号36
3.1.4步骤4:连接门36
3.1.5步骤5:添加IO标记37
3.1.6步骤6:创建用户约束文件38
3.1.7步骤7:生成.bit文件42
3.1.8步骤8:编写开发板44
3.1.9测试结果46
3.2一个4位计数器示例48
3.2.1绘制原理图49
3.2.2实现约束文件49
3.2.3测试计数器52
3.3小结52
第4章Verilog简介53
4.1模块53
4.2引线、寄存器和总线54
4.3并行执行54
4.4数字格式54
4.5使用Verilog编写的数据选择器55
4.6使用Verilog编写的计数器59
4.7同步逻辑62
4.8小结62
第5章模块化Verilog63
5.1七段译码器63
5.2按钮去抖68
5.3复用七段显示器和计数器73
5.3.1项目结构74
5.3.2display_7_seg76
5.3.3counter_7_seg79
5.3.4用户约束文件81
5.3.5导入模块源代码82
5.3.6设置顶层模块82
5.3.73数位版本83
5.3.8测试83
5.4小结84
第6章计时器示例85
6.1状态机85
6.2状态机设计87
6.3硬件88
6.3.1你之所需88
6.3.2构建88
6.4模块90
6.5用户约束文件91
6.6计时器模块92
6.6.1输入和输出92
6.6.2按压按钮92
6.6.3报警器实例93
6.6.4建模时间和显示93
6.6.5状态机实现94
6.6.6任务96
6.7测试98
6.8小结98
第7章PWM和伺服电机99
7.1脉冲宽度调制99
7.2PWM模块100
7.2.1PWM模块输入和输出101
7.2.2PWM测试模块101
7.2.3试一试104
7.3伺服电机104
7.4硬件105
7.4.1你之所需105
7.4.2构建106
7.5伺服模块109
7.6小结112
第8章音频113
8.1单音生成113
8.2Mojo的音频输出115
8.3通用音/频发生器116
8.3.1单音模块116
8.3.2tone_tester模块118
8.3.3测试118
8.4播放音频文件121
8.4.1音频文件121
8.4.2RAM122
8.4.3wav_player模块122
8.4.4测试125
8.4.5准备自己的音频125
8.5小结128
第9章视频129
9.1VGA129
9.2VGA定时同步132
9.3绘制矩形133
9.3.1VGA模块134
9.3.2VGA和Elbert2137
9.4使物体运动138
9.5存储器映射显示141
9.6小结143
第10章扩展内容145
10.1仿真145
10.2更深层次的内容146
10.3核和软处理器147
10.4更多Papilio内容147
10.5更多Mojo内容149
10.6小结150
附录A资源151
附录BElbert2参考155
附录CMojo参考165
附录DPapilioOne参考173
前言/序言
前言
用自己的芯片完成想做的事,岂不是一件乐事?当然,现场可编程门阵列(Field-ProgrammableGateArray,FPGA)可让你非常接近这一梦想。FPGA并非为你专门设计的芯片,而是通用芯片,能被配置用来完成你希望做的任何事情。
此外,要配置FPGA,既可绘制原理图,也可使用硬件定义语言Verilog;如果你的设计是成功的,Verilog也能用于生产真正的定制芯片。尽管《FPGA编程从零开始使用Verilog》也将展示如何使用原理图编辑器进行设计,但《FPGA编程从零开始使用Verilog》的重点是指导你学习Verilog语言。
可根据自己的需要多次修改FPGA配置,使其成为原型化设计的优秀工具。如果设计问题浮出水面,你可对设备重新编程,直到消除所有漏洞为止。当你意识到可真正配置FPGA来包含能运行程序的处理器时,这种十分出奇的灵活性就会显现出来。
在《FPGA编程从零开始使用Verilog》中,你将学习FPGA的一般使用原则,将学习《FPGA编程从零开始使用Verilog》描述的示例,并在三种最流行的FPGA评估板(Mojo、PapilioOne和Elbert2)上运行这些示例。
尽管从逻辑上讲,微控制器可胜任FPGA能完成的大部分工作,但FPGA的运行速度更快;另外,一些人员发现,相对于实现复杂的算法,描述逻辑门和硬件更简单。你可使用FPGA实现微控制器或其他处理器(以及其他人的工作)。
在其中一种低成本FPGA开发板上使用Verilog编程,可能最令人信服的原因仅在于学习一些新知识,收获一些乐趣!
读者可访问https://github.com/simonmonk/pro-fpgas下载《FPGA编程从零开始使用Verilog》各章的项目文件,也可扫描封底的二维码下载。