原語,即primitive。不同的廠商,原語不同;同一家的fpga,不同型號的晶元,可以也不一樣;原語類似最底層的描述方法。使用原語的好處,可以直接例化使用,不用定製ip;即可通過複製原語的語句,然後例化ip,就可使用;xilinx是通過直接修改原語中的引數再例化ip來使用;xilinx公司的原語分為10類,包括:計算元件,io埠元件,暫存器/鎖存器,時鐘元件,處理器元件,移位暫存器,配置和檢測元件,ram/rom元件,slice/clb元件,g-tranceiver。下圖所示為ug799中對原語的分類列表。
專案中主要用到的原語與io埠有關,所以基本在input/output functions 和io兩類中。下面著重介紹實際中所用到的幾個原語,晶元a7系列。
1. ibuf和ibufds(io)
ibuf是輸入快取,一般vivado會自動給輸入訊號加上,ibufds是ibuf的差分形式,支援低壓差分訊號(如lvcmos、lvds等)。在ibufds中,乙個電平介面用兩個獨特的電平介面(i和ib)表示。乙個可以認為是主訊號,另乙個可以認為是從訊號。主訊號和從訊號是同乙個邏輯訊號,但是相位相反。
舉例說明:
lvds_25的差分輸入的adc資料。
ibufds #( // 差分輸入原語,用於lvds_25埠
.diff_term("true"),
.iostandard("lvds_25")
) ibufds_adc01 (
.o(adc01_d[i]),
.i(adc01_p_d[i]),
.ib(adc01_n_d[i])
);2. iddr(input/output functions)
被設計用來接收ddr資料,避免額外的時序複雜性。
舉例說明:
差分資料來源經過差分轉單端後,生產adc01_d,在同步時鐘adc01_dco的驅動下,產生ddr資料adc01_a_d和adc01_b_d。
iddr #(
.ddr_clk_edge("same_edge_pipelined"),
.init_q1(1'b0),
.init_q2(1'b0),
.srtype("sync")
) iddr_adc01_d (
.q1(adc01_a_d),
.q2(adc01_b_d),
.c(adc01_dco),
.ce(1'b1),
.d(adc01_d),
.r(1'b0),
.s(1'b0)
);3. ibufg和ibufgds(io)
ibufg即輸入全域性緩衝,是與專用全域性時鐘輸入管腳相連線的首級全域性緩衝。所有從全域性時鐘管腳輸入的訊號必須經過ibuf元,否則在布局佈線時會報錯。 ibufg支援agp、ctt、gtl、gtlp、hstl、lvcmos、lvdci、lvds、lvpecl、lvttl、pci、pcix和 sstl等多種格式的io標準。
ibufgds是ibufg的差分形式,當訊號從一對差分全域性時鐘管腳輸入時,必須使用ibufgds作為全域性時鐘輸入緩衝。ibufg支援blvds、ldt、lvd***t、lvds、lvpecl和ulvds等多種格式的io標準。
舉例說明:
差分時鐘晶元輸入的100mhz時鐘,作為fpga的全域性時鐘。
ibufgds #(
.diff_term ("true" ),
.ibuf_low_pwr ("false")
) u_ibufg_clk_100 (
.i (fp_clk_100m_p),
.ib (fp_clk_100m_n),
.o (clk_100m )
);
Xilinx FPGA 使用者原語介紹
原語,即primitive。不同的廠商,原語不同 同一家的fpga,不同型號的晶元,可以也不一樣 原語類似最底層的描述方法。使用原語的好處,可以直接例化使用,不用定製ip 即可通過複製原語的語句,然後例化ip,就可使用 xilinx是通過直接修改原語中的引數再例化ip來使用 xilinx公司的原語分...
xilinx FPGA 配置原理
從不同的角度分析,可以得到不同的劃分形式,如從主從關係上分,則有主模式 從模式。如果從一次傳輸資料的位寬上分析,則有序列模式 和並行模式。另外還有jtag模式 模式的選擇是由fpga上的m0 m1 m2完成。因此,可以組合出多種不同的模式,如主序列模式 主並模式 從串模式 從並模式。其中,區分主與從...
Xilinx FPGA的配置流程
儘管fpga的配置模式各不相同,但整個配置過程中fpga的工作流程是一致的,分為三個部分 設定 載入 啟動。有多種方式使fpga的配置進入這一過程。在上電時,電壓達到fpga要求之前,fpga的上電復位模組將使fpga保持在復位狀態 外部控制prog b引腳出現乙個低脈衝也可以使fpga保持在復位狀...