[文档].艾米电子 - 在综合中使用函数,Verilog
對讀者的假設(shè)
已經(jīng)掌握:
- 可編程邏輯基礎(chǔ)
- Verilog HDL基礎(chǔ)
- 使用Verilog設(shè)計的Quartus II入門指南
- 使用Verilog設(shè)計的ModelSIm入門指南
內(nèi)容
1 概述
在Verilog的模塊里,有些表達(dá)式也許會出現(xiàn)很多次。為了不重復(fù)輸入這些代碼,我們可以把常用的這部分抽象為一個routine,模塊內(nèi)的function可以實現(xiàn)這一點。Verilog的函數(shù)有一個或多個的輸入?yún)?shù),僅返回單值。在綜合期間,函數(shù)被展開,以映射為相應(yīng)的硬件。因此,出于綜合的考慮,函數(shù)應(yīng)該保持簡單,可以當(dāng)作一些復(fù)雜表達(dá)式的縮略寫法。函數(shù)的基本寫法如下:
module . . . . . . // function defined within module function [result_type] [func_id] ([input_arg]); begin[statement] end endfunction . . . endmodule函數(shù)需要被定義在function和endfunction限定詞內(nèi)部。可選的[result_type]指定返回值得數(shù)據(jù)類型,常選用帶范圍的reg或integer類型。[input_arg]被用來聲明輸入的參數(shù),[func_id]被用來指定函數(shù)的名稱。函數(shù)通過表達(dá)式來返回的結(jié)果,如
[func_id] = ... ;2 范例
在二進(jìn)制計數(shù)器那一節(jié),我們討論了模-m計數(shù)器。有兩個參數(shù):M,指定計數(shù)的范圍為[0, M-1];N,指定M個數(shù)需要多少位寬來存儲,其值為大于或等于log2(M)的整數(shù)。N的值不應(yīng)該一個獨(dú)立的參數(shù),一個更好的做法定義一個局部常量,然后在模塊內(nèi)部計算它的值。通過使用函數(shù)可以實現(xiàn),修改后的代碼如下:
module mod_m_bin_counter #(parameter M=10) // mod-M (// global clock and asyn resetinput clk,input rst_n,// counter interfaceoutput max_tick,output min_tick,output [N-1:0] q );// signal declaration localparam N = log2(M); // number of bits in counter reg [N-1:0] r_reg; wire [N-1:0] r_next;// body // register always@(posedge clk, negedge rst_n)if(!rst_n)r_reg <= 0;elser_reg <= r_next;// next-state logic assign r_next = (r_reg == (M-1)) ? 0 : r_reg + 1'b1; //output logic assign q = r_reg; assign max_tick = (r_reg == (M-1)) ? 1'b1 : 1'b0; assign min_tick = (r_reg == 0) ? 1'b1 : 1'b0;// log2 constant function function integer log2(input integer n);integer i; beginlog2 = 1;for(i=0; 2**i<n; i = i + 1)log2 = i + 1; end endfunctionendmodule定義在模塊內(nèi)的函數(shù)log2(),用于求取局部變量N的值。由于在綜合之前的預(yù)處理中,函數(shù)已執(zhí)行計算;因此函數(shù)將不引用任何物理電路。
參考
1 Pong P. Chu.FPGA Prototyping By Verilog Examples: Xilinx Spartan-3 Version.Wiley
另見
[與艾米一起學(xué)FPGA/SOPC].[邏輯實驗文檔連載計劃]
轉(zhuǎn)載于:https://www.cnblogs.com/yuphone/archive/2010/12/12/1903743.html
總結(jié)
以上是生活随笔為你收集整理的[文档].艾米电子 - 在综合中使用函数,Verilog的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ChatGPT 为啥这么强:万字长文详解
- 下一篇: 让NV对30系显卡降价不可能!厂商清仓R