xilinx verilog語法技巧

2021-10-07 00:14:24 字數 3259 閱讀 8816

硬體描述語言(hdl)編碼技術讓您:

•描述數字邏輯電路中最常見的功能。

•充分利用xilinx®器件的架構特性。

vivado綜合根據hdl**的編寫方式推斷出四種型別的暫存器原語:

•fdce:具有時鐘使能和非同步清除的d觸發器

•fdpe:具有時鐘使能和非同步預設的d觸發器

•fdse:具有時鐘使能和同步設定的d觸發器

•fdre:具有時鐘使能和同步復位的d觸發器

register with rising-edge coding example (verilog)

// 8-bit register with

// rising-edge clock

// active-high synchronous clear

// active-high clock enable

// file: registers_1.v

module registers_1(d_in,ce,clk,clr,dout);

input [7:0] d_in;

input ce;

input clk;

input clr;

output [7:0] dout;

reg [7:0] d_reg;

always @ (posedge clk)

begin

if(clr)

d_reg <= 8'b0;

else if(ce)

d_reg <= d_in;

endassign dout = d_reg;

endmodule

// latch with positive gate and asynchronous reset

// file: latches.v

module latches (

input g, input d, input clr, output reg q );

always @ *

begin

if(clr) q = 0; else if(g) q = d;

endendmodule

移位暫存器是一系列觸發器,允許跨固定(靜態)數量的延遲級傳播資料。 相反,在動態移位暫存器中,傳播鏈的長度在電路操作期間動態變化。

vivado綜合在srl類資源上實現了推斷的移位暫存器,例如:

•srl16e

•srlc32e

8-bit shift register coding example one (verilog)

// 8-bit shift register

// rising edge clock

// active high clock enable

// concatenation-based template

// file: shift_registers_0.v

module shift_registers_0 (clk, clken, si, so);

parameter width = 32;

input clk, clken, si;

output so;

reg [width-1:0] shreg;

always @(posedge clk)

begin if (clken) shreg <= ; end

assign so = shreg[width-1];

endmodule

32-bit shift register coding example two (verilog)

// 32-bit shift register

// rising edge clock

// active high clock enable

// for-loop based template

// file: shift_registers_1.v

module shift_registers_1 (clk, clken, si, so);

parameter width = 32;

input clk, clken, si;

output so;

reg [width-1:0] shreg;

integer i;

always @(posedge clk)

begin

if (clken) begin for (i = 0; i < width-1; i = i+1) shreg[i+1] <= shreg[i]; shreg[0] <= si; end

endassign so = shreg[width-1];

endmodule

dynamic shift registers

動態移位暫存器是移位暫存器,其長度可在電路操作期間動態變化。

動態移位暫存器可以看作:

•一系列觸發器,它們在電路工作期間可以接受的最大長度。

•多路復用器,在給定的時鐘週期內選擇從傳播鏈中提取資料的階段。

32-bit dynamic shift registers coding example (verilog)

// 32-bit dynamic shift register.

// download:

// file: dynamic_shift_registers_1.v

module dynamic_shift_register_1 (clk, ce, sel, si, do);

parameter selwidth = 5;

input clk, ce, si;

input [selwidth-1:0] sel;

output do;

localparam datawidth = 2**selwidth;

reg [datawidth-1:0] data;

assign do = data[sel];

always @(posedge clk)

begin if (ce == 1'b1) data <= ; end

endmodule

verilog常用語法一讓您的fpga設計更輕鬆

verilog常用語法二讓您的fpga設計更輕鬆

verilog常用語法三讓您的fpga設計更輕鬆

祝大家五一勞動節快樂

語法糖(糖衣語法)

今天看資料時,遇到乙個詞 語法糖,不是第一次遇到這個詞,之前覺得很簡單,沒有深究過,今天特意看了看,發現其並且應用廣泛,而且還挺有意思。首先來看百科的解釋 都大同小異,大致如下 語法糖 syntactic sugar 也譯為糖衣語法,指計算機語言中新增的某種語法,這種語法對語言的功能並沒有影響,但是...

語法 C 基本語法

標頭檔案 在程式設計競賽中,我們常見乙個標頭檔案 include 發現它是部分c 中支援的乙個幾乎萬能的標頭檔案,包含所有的可用到的c 庫函式,如 在程式設計競賽中,使用這個標頭檔案是乙個好的想法,特別是當你在選擇標頭檔案時想減少時間,我們更加專注於找到演算法解決問題而不是軟體工程。而從軟體工程的視...

jdbc mysql語法 JDBC SQL語法

結構化查詢語言 sql 是一種標準化語言,允許對資料庫執行操作,例如 建立資料記錄,讀取內容,更新內容和刪除資料記錄等。本教程中將概述sql,這是了解和學習jdbc概念的前提條件。經過本章後,您將能夠在資料庫中建立,建立,讀取,更新和刪除 通常稱為crud操作 資料。有關sql的詳細了解,可以閱讀我...