FPGA实战演练逻辑篇40:代码书写规范
代码书写规范
本文节选自特权同学的图书《FPGA设计实战演练(逻辑篇)》
配套例程下载链接:http://pan.baidu.com/s/1pJ5bCtt
虽然没有“国际标准”级别的Verilog或VHDL代码书写规范可供参考,但是相信每一个稍微规范点的做FPGA设计的公司都会为自己的团队制定一套供参考的代码书写规范。毕竟一个团队中,大家的代码书写格式达到基本一致的情况下,相互查阅、整合或移植起来才会“游刃有余”。因此,希望初学者从一开始就养成好的习惯,尽量遵从比较规范的书写方式。话说“幸福的家庭都是一样的,不幸的家庭各有各的不幸”,我们也相信,尽管不同的公司为自己的团队制定的Verilog或VHDL代码书写规范可能略有差异,但是真正好的书写规范应该都是大同小异的。所以,对于网络上漫天飞舞的书写规范,笔者本着“取其精华去其糟粕”的精神和大家一同分享。这里也不刻意区分verilog和VHDL书写规范上的不同,只是谈论一些基本的可供遵循的规范。(特权同学,版权所有)
(1) 标识符
包括语法保留的关键词、模块名称、端口名称、信号名称、各种变量或常量名称等。语法保留的关键词是不可以作为后面几种名称使用的,Verilog和VHDL的主要关键字如下:
Verilog关键词
always endmodule medium reg tranif0 and end primitive module release
tranif1 assign endspecify nand repeattri attribute endtable negedge rnmos tri0
begin endtask nmos rpmos tri1 buf event nor rtrantriand bufif0 for not
rtranif0 trior bufif1 force notif0 rtranif1 trireg case forever notif1 scalared
unsigned casex fork or signed vectored casez function output small wait
cmos highz0 parameter specify wand deassign highz1 pmos specparam weak0
default if posedge strength weak1 defparam ifnone primitive strong0 while
disable initial pull0 strong1 wire edge inout pull1 supply0 wor else input
pulldown supply1 xnor end integer pullup table xor endattribute join remos
task endcase large real time endfunction macromodule realtime tran
VHDL关键词
abs downto library postponed subtype access else linkage procedure then
after elsif literal process to aliasend loop pure transport all entity map range
type and exit mod record unaffected architecture file nand register units
array for new reject until assert function next rem use attribute generate
nor report variable begin generic not return wait block group null rol when
body guarded of ror while buffer
- 基于FPGA的片上系统的无线保密通信终端(02-16)
- 基于Virtex-5 FPGA设计Gbps无线通信基站(05-12)
- 基于FPGA的DVI/HDMI接口实现(05-13)
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- 采用EEPROM对大容量FPGA芯片数据实现串行加载(03-18)
- 赛灵思:可编程逻辑不仅已是大势所趋,而且势不可挡(07-24)