以下以Verilog在数字设计中的应用为例:
Verilog是硬件描述语言,“硬件”是基础,数字、逻辑、电路,基础一定要学好。
a. 数字的进制:熟悉二进制、八进制、十进制、十六进制换算,BCD,格雷码转换 b. 逻辑运算:与,或,非。 c 组合逻辑电路:3-8译码器,编码器,比较器,加法器,理解竞争与冒险 d. 时序逻辑电路:RS触发器,D触发器,计数器 e. 存储器:ROM,RAM
a. 掌握Verilog常用语法:注意不要在Verilog语法本身花费过多时间,要结合实际设计使用。 b. 使用Verilog搭建基本组合逻辑、时序逻辑电路; c. 使用Verilog搭建基本testbench d. 使用仿真器进行功能仿真,使用综合器查看对应的硬件结构
a. 根据设计需求撰写设计文档,包括模块架构框图,接口定义,详细设计如数据流程、状态转移以及关键逻辑描述。 b. 根据设计文档完成Verilog代码设计 c. 完成功能验证 d. FPGA或芯片综合流程
这一阶段会持续很长时间。
模块的复杂度各有不同,比如电平转换,数据流控,数字信号处理算法,接口协议,总线桥接等。需要在不同的设计中不断积累经验。
a. 复杂IP设计 b. SoC集成
a. 硬件是什么 c. 面积、时序、功耗 b. 可综合 d. 可测试 e. 可靠性 f. 可重用
a. 代码重用 b. 代码自动生成 c. 授权他人 d. 外部采购
Verilog代码也是纯文本,需要一个好用的编辑器。文本编辑器的圣战请自行搜索。
a. 基本的verilog语法高亮,支持自动补全,代码折叠
b. 支持代码模板或者可扩展插件:如常用代码段生成,端口定义,自动例化等
c. 跨平台:一次学习,长久受益
选定一个,用熟用好。
写的每一段Verilog代码都应该使用版本控制。
学会使用svn,git。
推荐使用github,或者国内的一些开源平台,比如码云(gitee.com),可以跨平台代码同步。
不同代码版本之间的比较,在追溯问题时经常用到。
可以使用svn/git自带的比较合并工具,也可以使用操作系统下的diff工具。
或者选择专用可视化文本比较工具,比如Beyond Compare,Araxis Merge。
参考“Verilog与EDA工具”列表,除了FPGA工具和仿真器之外,绝大部分EDA工具智能在Linux(unix)环境下运行。
a. 可以独立安装linux,可以装linux/win双系统,可以在win下面使用虚拟机。
b. Linux版本建议Ubuntu 16.04 LTS或者Centos 7
c. EDA相关软件(以后再聊)
d. 在windows环境下推荐:Win7/10 64bit + 文本编辑器 + 文本比较器 + SVN/git + Questasim仿真器 + FPGA工具,也可以使用win10 bash或者git bash模拟部分linux命令操作。