本规范主要是对设计流程、端口名称、组织结构、文档编排进行约定。本约定作用仅仅是为了使后期代码设计和文档编写更加规范有序,方便自己和读者阅读,与公司的设计规范还差着十万八千里,因此,望大家万不可以小梅哥的规范作为标准。当然,小梅哥在规范约定时,也会尽量参考华为verilog规范和至芯科技的文档编写规范力争做到简洁通俗。
规范约定之设计文档基本结构
为了将设计能够清晰明了的介绍给大家,让大家一看就懂,文档编写时会详细包含以下内容:
一、 实验目的
二、 实验原理
三、 硬件设计
四、 架构设计
五、 代码组织方式
六、 关键代码解读
七、 测试平台设计
八、 仿真分析
九、 下板验证
现分别对以上标题的内容进行介绍
实验目的:主要提出实验的要求以及需要达到的目的
实验原理:主要对该实验涉及到的软硬件电路、协议、基本思路进行分析和介绍
硬件设计:主要分析实现该实验的硬件电路设计,因为目前小梅哥暂时没钱做开发板,因此只能是在其他厂家的开发板硬件平台上进行分析讲解
架构组织:主要进行实验的模块构建和架构解读,包括端口意义,内部信号意义等。
代码组织方式:主要进行代码设计方案的介绍,常用的有状态机、线性序列机,不同的实验根据具体情况适合采用不同的方案。如果采用状态机进行设计,则会进行状态转移图的设计,如果采用线性序列机的方式,也会设计相应的线性序列表。
关键代码解读:主要针对设计中关键的代码进行分析解读
测试平台设计:系统的testbench编写,如果是多模块结构,则会对所有模块分别编写testbench
仿真分析:对仿真结果进行分析,功能仿真必做,时序仿真选做,具体按照实验内容而定
下板验证:目前小梅哥没有自己的开发板,没办法进行统一的下板验证,但我会就着手边的各式各类的开发板上有的硬件资源,自行下板验证,以保证代码的正确性。
规范约定之代码端口命名
设计中会设计到很多端口,不同的端口含义各不一样,有内部信号,输入输出端口,标志信号,测试信号。
现分别对端口名做如下约定:
1、 端口信号首字母大写;
2、 全局时钟信号名为Clk;
3、 全局复位信号名为Global_Rst;
4、 其它的暂时没有考虑的太多,具体会在每个实验对应的文档中给出。
规范约定之状态机风格设计
在学习Verilog的时候,经常有人问是三段式状态机好还是一段式状态机好,个人觉得,实际使用哪种方式并没有一个严格的限定,有的设计,采用一段式状态机设计简洁,阅读方便,而三段式状态机则会较为繁琐;另外又有一些设计,需要用三段式状态机才能很好的组织结构。甚至有的设计,需要状态机和线性序列机联合使用,方能达到好的效果,因此,小梅哥不想给机子带上一个标准的框子,对应不同的设计,我会根据实际情况选择不同的编码方式。
可能考虑的不是很细致,本文档会在实际代码和文档的设计中不断的丰富和完善。
今天白天到处跑,忙了一整天,因此耽误了进度。这也正是我所害怕的,我害怕总结学习的过程被琐事扰乱,因此,小梅哥需要大家的监督和鼓励,希望我们共同关注,共同学习,争取将本套学习总结做好做精。如果哪一天我没有更新,请大家给我失望的表情。
|