差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
fpga_design_tool [2021/09/13 00:55] gongyu |
fpga_design_tool [2021/09/13 22:56] (当前版本) gongyu [2. Verilog语言] |
||
---|---|---|---|
行 1: | 行 1: | ||
## FPGA的开发及工具 | ## FPGA的开发及工具 | ||
- | FPGA设计的各个阶段,FPGA厂商和EDA软件公司提供了很多优秀的EDA工具,尤其是FPGA厂商提供的集成开发环境。熟练掌握这些设计工具能够有效提高设计的效率,但是必须明白这些EDA软件只是一个工具,核心的FPGA设计流程是不变的。STEP小脚丫系列目前有支持Lattice和Intel-Altera的版本,未来将会开发基于Xilinx的FPGA芯片平台。 | + | FPGA设计的各个阶段,FPGA厂商和EDA软件公司提供了很多优秀的EDA工具,尤其是FPGA厂商提供的集成开发环境。熟练掌握这些设计工具能够有效提高设计的效率,但是必须明白这些EDA软件只是一个工具,核心的FPGA设计流程是不变的。 |
\\ | \\ | ||
FPGA设计软件: | FPGA设计软件: | ||
- | * [[http://www.latticesemi.com|Lattice公司]]: [[Diamond]] | + | * [[http://www.latticesemi.com|Lattice公司]]:支持Windows和Linux平台的[[Diamond]] |
- | * [[http://www.altera.com|Altera公司]]: [[Quartus Prime]] | + | * [[http://www.altera.com|Altera公司]]支持Windows和Linux平台的[[Quartus Prime]] |
- | * [[http://www.xilinx.com|Xilinx公司]]: [[https://www.xilinx.com/products/design-tools/vivado.html|Vivado Design Suite]] | + | * [[http://www.xilinx.com|Xilinx公司]]的[[https://www.xilinx.com/products/design-tools/vivado.html|Vivado Design Suite]] |
+ | * [[https://www.stepfpga.com/|苏州思得普科技有限公司]]开发的[[online_ide|在线FPGA综合设计工具]],在浏览器里运行,因此可以支持任何一种操作系统,且能够支持Lattice的XO2系列FPGA和Altera的MAX10系列FPGA,适合初学者使用。 | ||
\\ | \\ | ||
行 61: | 行 62: | ||
在设计FPGA逻辑中有两种硬件设计语言(HDL)可以选择,一种是[[Verilog]] HDL,还有一种是VHDL,在我们的设计中选用普及率更广,更容易上手的[[Verilog]],具体如何使用,可以参考文章末尾的几个PPT教程。 | 在设计FPGA逻辑中有两种硬件设计语言(HDL)可以选择,一种是[[Verilog]] HDL,还有一种是VHDL,在我们的设计中选用普及率更广,更容易上手的[[Verilog]],具体如何使用,可以参考文章末尾的几个PPT教程。 | ||
- | ### 3. 代码规范 | ||
规范的代码风格一方面能体现你足够专业,另一方面也是最重要的一方面,代码的规范性有利于开发交流,让代码的可读性大大增强,也有利于降低代码的出错率。 | 规范的代码风格一方面能体现你足够专业,另一方面也是最重要的一方面,代码的规范性有利于开发交流,让代码的可读性大大增强,也有利于降低代码的出错率。 | ||
* [[硬禾实战营Verilog代码规范]] | * [[硬禾实战营Verilog代码规范]] | ||
行 88: | 行 88: | ||
FPGA在各个领域都是必不可少的一种硬件工具,掌握并有效使用FPGA对当代的电子设计工程师来讲是非常必要的,要做到较好的FPGA设计需要具备如下的一些技能: | FPGA在各个领域都是必不可少的一种硬件工具,掌握并有效使用FPGA对当代的电子设计工程师来讲是非常必要的,要做到较好的FPGA设计需要具备如下的一些技能: | ||
- | #### 5.1 具备自己设计高速数字电路板(PCB)的能力并且掌握[[DSP]]的基础理论 | + | #### 5.1 具备自己设计高速数字电路板(PCB)的能力并且掌握DSP的基础理论 |
* [[PCB]]硬件与接口设计 | * [[PCB]]硬件与接口设计 | ||
* 逻辑电路设计 | * 逻辑电路设计 | ||
行 140: | 行 140: | ||
#### 5.6 FPGA应用中的注意事项 | #### 5.6 FPGA应用中的注意事项 | ||
- | **硬件设计** | + | **5.6.1 硬件设计** |
- 管脚分配:输入/输出类型,预留功能管脚,方便布线 | - 管脚分配:输入/输出类型,预留功能管脚,方便布线 | ||
- [[时钟]]:全局时钟 vs 局部时钟,[[PLL]] vs [[DLL]],是否驱动 | - [[时钟]]:全局时钟 vs 局部时钟,[[PLL]] vs [[DLL]],是否驱动 | ||
行 147: | 行 147: | ||
- 测试点:关键信号 - 时钟、电源、关键IO | - 测试点:关键信号 - 时钟、电源、关键IO | ||
- | **代码开发** | + | **5.6.2 代码开发** |
- 善用IP Core:调用原厂提供的经过验证过的IP内核 | - 善用IP Core:调用原厂提供的经过验证过的IP内核 | ||
- 硬件设计概念:并行工作、时延 | - 硬件设计概念:并行工作、时延 | ||
行 153: | 行 153: | ||
- 调试:使用原厂提供的片上逻辑分析工具 | - 调试:使用原厂提供的片上逻辑分析工具 | ||
- | **FPGA学习和使用要借助的资源** | + | **5.6.3 FPGA学习和使用要借助的资源** |
* 工具:开发板、评估板、调试工具、编译/仿真软件 | * 工具:开发板、评估板、调试工具、编译/仿真软件 | ||
* IP Cores:原厂/官方提供、开源组织、其他人验证 | * IP Cores:原厂/官方提供、开源组织、其他人验证 | ||
行 159: | 行 159: | ||
* 技术支持:原厂的FAE、第三方设计公司、社区/论坛/QQ群 | * 技术支持:原厂的FAE、第三方设计公司、社区/论坛/QQ群 | ||
- | **IP Cores的有效使用** | + | **5.6.4 IP Cores的有效使用** |
{{ :opencores_logo.png?300|}} | {{ :opencores_logo.png?300|}} | ||
随着电子系统越来越复杂,我们不可能任何一个设计都从头自己写代码,必须学会站在巨人的肩上,充分利用现有的资源,尽快地完成自己的设计。经过几十年可编程逻辑技术的发展,可以说几乎所有的常见功能都能够找到可以参考甚至可以直接调用的IP内核,获取这些IP、能够争取地使用这些IP就是一种非常重要的能力。到哪里去找到可靠使用的内核呢?推荐如下几个途径: | 随着电子系统越来越复杂,我们不可能任何一个设计都从头自己写代码,必须学会站在巨人的肩上,充分利用现有的资源,尽快地完成自己的设计。经过几十年可编程逻辑技术的发展,可以说几乎所有的常见功能都能够找到可以参考甚至可以直接调用的IP内核,获取这些IP、能够争取地使用这些IP就是一种非常重要的能力。到哪里去找到可靠使用的内核呢?推荐如下几个途径: |