国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

FPGA實(shí)戰(zhàn)演練邏輯篇40:代碼書寫規(guī)范

發(fā)布時(shí)間:2015-6-23 13:46    發(fā)布者:rousong1989
代碼書寫規(guī)范
本文節(jié)選自特權(quán)同學(xué)的圖書《FPGA設(shè)計(jì)實(shí)戰(zhàn)演練(邏輯篇)》
配套例程下載鏈接:http://pan.baidu.com/s/1pJ5bCtt
         雖然沒有“國(guó)際標(biāo)準(zhǔn)”級(jí)別的VerilogVHDL代碼書寫規(guī)范可供參考,但是相信每一個(gè)稍微規(guī)范點(diǎn)的做FPGA設(shè)計(jì)的公司都會(huì)為自己的團(tuán)隊(duì)制定一套供參考的代碼書寫規(guī)范。畢竟一個(gè)團(tuán)隊(duì)中,大家的代碼書寫格式達(dá)到基本一致的情況下,相互查閱、整合或移植起來才會(huì)“游刃有余”。因此,希望初學(xué)者從一開始就養(yǎng)成好的習(xí)慣,盡量遵從比較規(guī)范的書寫方式。話說“幸福的家庭都是一樣的,不幸的家庭各有各的不幸”,我們也相信,盡管不同的公司為自己的團(tuán)隊(duì)制定的Verilog或VHDL代碼書寫規(guī)范可能略有差異,但是真正好的書寫規(guī)范應(yīng)該都是大同小異的。所以,對(duì)于網(wǎng)絡(luò)上漫天飛舞的書寫規(guī)范,筆者本著“取其精華去其糟粕”的精神和大家一同分享。這里也不刻意區(qū)分verilog和VHDL書寫規(guī)范上的不同,只是談?wù)撘恍┗镜目晒┳裱囊?guī)范。(特權(quán)同學(xué),版權(quán)所有)
(1)    標(biāo)識(shí)符
         包括語法保留的關(guān)鍵詞、模塊名稱、端口名稱、信號(hào)名稱、各種變量或常量名稱等。語法保留的關(guān)鍵詞是不可以作為后面幾種名稱使用的,Verilog和VHDL的主要關(guān)鍵字如下:
Verilog關(guān)鍵詞
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關(guān)鍵詞
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 if  on  select with bus  impure  open
severity  xnor  case  in  or  shared  xor  component  inertial  others  signal
configuration  inout  out  sla  constant  is  package  sra  disconnect label  port  srl
         除了以上這些保留的關(guān)鍵詞不可以作為用戶自定義的其他名稱,verilog和VHDL還有以下的一些用戶自定義命名規(guī)則必須遵循:
●  命名中只能夠包含字母、數(shù)字和下劃線“_”(verilog的命名還可以包含符號(hào)“$”)。(特權(quán)同學(xué),版權(quán)所有)
●  命名的第一個(gè)字符必須是字母(verilog的命名授字符可以是下劃線“_”,但一般不推薦這么命名)。(特權(quán)同學(xué),版權(quán)所有)
●  在一個(gè)模塊中的命名必須是唯一的。(特權(quán)同學(xué),版權(quán)所有)
●  VHDL的命名中不允許連續(xù)出現(xiàn)多個(gè)下劃線“_”,也不允許下劃線“_”是命名的最后一個(gè)字符。(特權(quán)同學(xué),版權(quán)所有)
關(guān)于模塊名稱、端口名稱、信號(hào)名稱、各種變量或常量名稱等的命名,有很多推薦的規(guī)則可供參考,如下:
●  盡可能使用能表達(dá)名稱具體含義的英文單詞命名,單詞名稱過長(zhǎng)時(shí)可以采用易于識(shí)別的縮寫形式替代,多個(gè)單詞之間可以用下劃線“_”進(jìn)行分割。(特權(quán)同學(xué),版權(quán)所有)
●  對(duì)于出現(xiàn)頻率較高的相同含義的單詞,建議統(tǒng)一作為前綴或后綴使用。(特權(quán)同學(xué),版權(quán)所有)
●  對(duì)于低電平有效的消耗,通常加后綴“_n”表示。(特權(quán)同學(xué),版權(quán)所有)
●  在同一個(gè)設(shè)計(jì)中,盡可能的統(tǒng)一大小寫的書寫規(guī)范。(很多規(guī)范里對(duì)命名的大小寫書寫格式有要求,但是筆者這里不做詳細(xì)規(guī)定,大家可以根據(jù)自己的需要設(shè)定。)
(2)    格式
         這里的格式主要是指每個(gè)代碼功能塊之間、關(guān)鍵詞、名稱或操作符之間的間距(行間距、字符間距)規(guī)范。得體的代碼格式不僅看起來美觀大方,而且便于閱讀和調(diào)試。關(guān)于格式,可能不同的公司也都有相關(guān)的規(guī)范要求,筆者在此建議大家盡量遵循以下一些原則:
●  每個(gè)功能塊(如verilog的always邏輯、VHDL的process邏輯)之間盡量用一行或數(shù)行空格進(jìn)行隔離。(特權(quán)同學(xué),版權(quán)所有)
●  一個(gè)語法語句一行,不要在同一行寫多個(gè)語法語句。(特權(quán)同學(xué),版權(quán)所有)
●  單行代碼不宜過長(zhǎng),所有代碼行長(zhǎng)度盡量控制在一個(gè)適當(dāng)?shù)谋阌诓榭吹姆秶。(特?quán)同學(xué),版權(quán)所有)
●  同層次的語法盡量對(duì)齊,使用Tab鍵(通常一個(gè)Tab對(duì)應(yīng)四個(gè)字符寬度)進(jìn)行縮進(jìn)。(特權(quán)同學(xué),版權(quán)所有)
●  行尾不要有多余的空格。(特權(quán)同學(xué),版權(quán)所有)
●  關(guān)鍵詞、各類名稱或變量、操作符相互間都盡量保留一個(gè)空格以作隔離。(特權(quán)同學(xué),版權(quán)所有)
(3)    注釋
         Verilog的注釋有“/* */”以及“//”兩種方式!/*”左側(cè)和“*/”右側(cè)之間的部分為注釋內(nèi)容,此注釋可以用在行前、行間、行末或多行中;“//”后面的內(nèi)容為注釋,該注釋只可用在行末(當(dāng)然了,它也可以頂個(gè),那么意味著整行都是注釋)。(特權(quán)同學(xué),版權(quán)所有)
         VHDL的注釋只有“--”一種。類似verilog的“//”,“--”后面的內(nèi)容為注釋,該注釋只可用在行末。(特權(quán)同學(xué),版權(quán)所有)
         注釋的擺放和寫法通常也有講究,幾個(gè)要點(diǎn)歸納如下:
●  每個(gè)獨(dú)立的功能模塊都要有簡(jiǎn)單的功能描述,對(duì)輸入輸出信號(hào)功能進(jìn)行描述。(特權(quán)同學(xué),版權(quán)所有)
●  無論習(xí)慣在代碼末注釋還是代碼上面注釋,同一個(gè)模塊或工程中盡量保持一致。(特權(quán)同學(xué),版權(quán)所有)
●  注釋內(nèi)容簡(jiǎn)明扼要,不要過于冗長(zhǎng)或?qū)憦U話(例如:add = add+1;          //add自增)。(特權(quán)同學(xué),版權(quán)所有)

本文地址:http://www.4huy16.com/thread-150817-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • Microchip第22屆中國(guó)技術(shù)精英年會(huì)——采訪篇
  • Microchip第22屆中國(guó)技術(shù)精英年會(huì)上海首站開幕
  • “芯”光璀璨,鵬城共賞——2025 Microchip中國(guó)技術(shù)精英年會(huì)深圳站回顧
  • 電動(dòng)兩輪車設(shè)計(jì)生態(tài)系統(tǒng)
  • 貿(mào)澤電子(Mouser)專區(qū)
關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表