日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > ZYNQ


基本的語法略過,主要想寫一些關于框架,規(guī)范,技術難點的博文,這樣對于我們養(yǎng)成好的編碼習慣是有好處的,就定這樣一個flag吧.希望大家可以一起好好學習,共同進步.

接口時序設計規(guī)范

模塊和模塊之間的通過模塊的接口實現(xiàn)關聯(lián), 因此規(guī)范的時序設計, 對于程序設計的過程, 以及程序的維護, 團隊之間的溝通都是非常必要的。

命名規(guī)則

  • 1、 頂層文件

對象+功能+top

比如:video_oneline_top

  • 2、 邏輯控制文件

介于頂層和驅動層文件之間

對象+ctr

比如:ddr_ctr.v

  • 3、 驅動程序命名

對象+功能+dri

比如:lcd_dri.v、 uart_rxd_dri.v

  • 4、 參數(shù)文件命名

對象+para

比如:lcd_para.v

  • 5、 模塊接口命名:文件名+u

比如 lcd_dir lcd_dir_u(……..)

  • 6、 模塊接口命名:特征名+文件名+u

比如 mcb_read c3_mcb_read_u

  • 7、 程序注釋說明

 1/*****************************************************************/  2// Company:  3// Engineer:  4// WEB:  5// BBS:  6// Create Date: 07:28:50 07/31/2019  7// Design Name: FPGA STREAM  8// Module Name: FPGA_USB  9// Project Name: FPGA STREAM 10// Target Devices: XC6SLX16-FTG256/XC6SLX25-FTG256 Mis603 11 12// Tool versions: ISE14.7 13// Description: CY7C68013A SLAVE FIFO comunication with fpga 14// Revision: V1.0 15// Additional Comments: 16//1) _i input 17//2) _o output 18//3) _n activ low 19//4) _dg debug signal 20//5) _r delay or register 21//6) _s state mechine 22/*****************************************************************/ 
  • 8、 端口注釋

input Video_vs_i,//輸入場同步入

  • 9、 信號命名

命名總體規(guī)則:對象+功能(+極性) +特性

  • 10、 時鐘信號

對象+功能+特性

比如:phy_txclk_i、 sys_50mhz_i

  • 11、 復位信號

對象+功能+極性+特性

比如:phy_rst_n_i、 sys_rst_n_i

  • 12、 延遲信號

對象+功能+特性 1+特征 2

比如:fram_sync_i_r0、 fram_sync_i_r1

  • 13、 特定功能計數(shù)器

對象+cnt

比如:line_cnt、 div_cnt0、 div_cnt1

功能+cnt

比如:wr_cnt、 rd_cnt

對象+功能+cnt

比如:fifo_wr_cnt、 mcb_wr_cnt、 mem_wr_cnt

對象+對象+cnt

比如:video_line_cnt、 video_fram_cnt

  • 14、 一般計數(shù)器

cnt+序號

用于不容易混淆的計數(shù)

比如:cnt0、 cnt1、 cnt2

  • 15、 時序同步信號

對象+功能+特性

比如:line_sync_i、 fram_sysc_i

  • 16、 使能信號
    功能+en

比如:wr_en、 rd_en

對象+功能+en

比如:fifo_wr_en、 mcb_wr_en

Verilog 最最基礎語法

C 語言和 Verilog 的關鍵詞和結構對比:

C 語言和 Verilog 運算符對比:

關鍵字

信號部分:

input 關鍵詞, 模塊的輸入信號, 比如 input Clk, Clk 是外面關鍵輸入的時鐘信號;

output 關鍵詞, 模塊的輸出信號, 比如 output[3:0]Led; 這個地方正好是一組輸出信號。其中[3:0]表示 0~3 共 4 路信號。

inout 模塊輸入輸出雙向信號。這種類型, 我們的例子 24LC02 中有使用。數(shù)總線的通信中, 這種信號被廣泛應用;

wire 關鍵詞, 線信號。例如:wire C1_Clk; 其中 C1_Clk 就是 wire 類型的信號;

線信號,三態(tài)類型, 我們一般常用的線信號類型有input,output,inout,wire;

reg 關鍵詞, 寄存器。和線信號不同, 它可以在 always 中被賦值, 經(jīng)常用于時序邏輯中。比如 reg[3:0]Led;表示了一組寄存器。

結構部分:

1module() 2… en 3dmodule

代表一個模塊, 我們的代碼寫在這個兩個關鍵字中間

always@()括號里面是敏感信號。這里的 always@(posedge Clk)敏感信號是 posedge Clk 含義是在上升沿的時候有效, 敏感信號還可以 negedge Clk 含義是下降沿的時候有效, 這種形式一般時序邏輯都會用到。還可以是這個一符號, 如果是一個則表示一直是敏感的, 一般用于組合邏輯。

assign 用來給 output,inout 以及 wire 這些類型進行連線。assign 相當于一條連線, 將表達式右邊的電路直接通過 wire(線)連接到左邊, 左邊信號必須是 wire 型(output 和 inout 屬于 wire 型) 。當右邊變化了左邊立馬變化, 方便用來描述簡單的組合邏輯。

符號部分:

這里重點講解一下“<=” 賦值符號,非阻塞賦值 ,“=” 阻塞賦值,“{}”“<=” 賦值符號, 非阻塞賦值, 在一個 always 模塊中, 所有語句一起更新。它也可以表示小于等于, 具體是什么含義編譯環(huán)境根據(jù)當前編程環(huán)境判斷, 如果“<=” 是用在一個 if 判斷里如:if(a <= 10);當然就表示小于等于了。

“=” 阻塞賦值, 或者給信號賦值, 如果在 always 模塊中, 這條語句被立刻執(zhí)行。阻塞賦值和非阻塞賦值將再后面詳細舉例說明。

“{} ” 在 Verilog 中表示拼接符, {a,b}這個的含義是將括號內的數(shù)按位并在一起, 比如:{1001,1110}表示的是 10011110。拼接是 Verilog 相對于其他語言的一大優(yōu)勢, 在以后的編程中請慢慢體會。

參數(shù)部分:

1parameter 2parameter a = 180;//十進制, 默認分配長度 32bit(編譯器默認) 3parameter a = 8’d180;//十進制 4parameter a = 8’haa; //十六進制 5parameter a = 8’b1010_1010; //二進制 

預處理命令

1`include file1.v 2`define X = 1; 3`deine Y; 4`ifdef Y 5Z=1; 6`else 7Z=0; 8`endif 

Verilog 中數(shù)值表示的方式

如果我們要表示一個十進制是 180 的數(shù)值, 在 Verilog 中的表示方法如下:
二進制:8’ b1010_1010; //其中“_” 是為了容易觀察位數(shù), 可有可無。
十進制:8’ d180;
16 進制:8’ hAA;

講到這里, 具備這些基礎知識, 需要通過代碼來學習Veriog 語言。最后, 筆者提一點建議, 學習 Verilog 多看別人寫的優(yōu)秀的代碼, 多看官方提供的代碼和文檔。其中官方提供的代碼, 很多時候代表了最新的用法, 或者推薦的用法。讀者學習, 首先把最最基礎的掌握好, 這樣, 在項目中遇到了問題, 也能快速學習, 快速解決。

對于理論知識的學習, 沒必要一開始就研究得那么深刻, 只是搞理論學習, 對于學習Verilog 語言, 或者 FPGA 開發(fā)是不實際的, 要聯(lián)系理論和實踐結合。多仿真, 多驗證, 多問題, 多學習, 多改進


本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
關閉