国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

VIVADO 自定義封裝ip核(超詳細(xì))

這篇具有很好參考價值的文章主要介紹了VIVADO 自定義封裝ip核(超詳細(xì))。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

版本:vivado 2018.3

vivado 自定義封裝ip核,可以將ip核封裝成帶AXI總線,也可將ip核封裝成不帶AXI總線。

本次設(shè)計(jì)介紹,如何將當(dāng)前工程封裝成ip核(不帶AXI總線)

目錄

一、工程文件介紹

二、封裝IP核步驟

三、將IP核添加到ip核庫?


一、工程文件介紹

1. 創(chuàng)建如下的工程:

vivado自定義ip核,fpga開發(fā)

2. 工程內(nèi)的.v文件如下:


module uart_rx
#(
	parameter	integer	BPS		= 9_600		,		//發(fā)送波特率
	parameter 	integer	CLK_FRE	= 50_000_000		//輸入時鐘頻率
)	
(	
//系統(tǒng)接口
	input 				sys_clk			,			//50M系統(tǒng)時鐘
	input 				sys_rst_n		,			//系統(tǒng)復(fù)位
//UART接收線	
	input 				uart_rxd		,			//接收數(shù)據(jù)線
//用戶接口	
	output reg 			uart_rx_done	,			//數(shù)據(jù)接收完成標(biāo)志,當(dāng)其為高電平時,代表接收數(shù)據(jù)有效
	output reg [7:0]	uart_rx_data				//接收到的數(shù)據(jù),在uart_rx_done為高電平時有效
);
 
//param define
localparam	integer	BPS_CNT = CLK_FRE / BPS;		//根據(jù)波特率計(jì)算傳輸每個bit需要多個系統(tǒng)時鐘	
//reg define
reg 			uart_rx_d1		;					//寄存1拍
reg 			uart_rx_d2		;					//寄存2拍
reg 			uart_rx_d3		;					//寄存3拍
reg [31:0]		clk_cnt			;					//計(jì)數(shù)器,用于計(jì)數(shù)發(fā)送一個bit數(shù)據(jù)所需要的時鐘數(shù)
reg [3:0]  		bit_cnt			;					//bit計(jì)數(shù)器,標(biāo)志當(dāng)前發(fā)送了多少個bit
reg 			rx_en			;					//接收標(biāo)志信號,拉高代表接收過程正在進(jìn)行
reg [7:0]		uart_rx_data_reg;					//接收數(shù)據(jù)寄存
//wire define				
wire 			neg_uart_rxd	;					//接收數(shù)據(jù)線的下降沿
 
assign	neg_uart_rxd = uart_rx_d3 & (~uart_rx_d2);	//捕獲數(shù)據(jù)線的下降沿,用來標(biāo)志數(shù)據(jù)傳輸開始
 
//將數(shù)據(jù)線打3拍,作用1:同步不同時鐘域信號,防止亞穩(wěn)態(tài);作用2:捕獲下降沿
always@(posedge sys_clk or negedge sys_rst_n)begin
	if(!sys_rst_n)begin
		uart_rx_d1 <= 1'b0;
		uart_rx_d2 <= 1'b0;
		uart_rx_d3 <= 1'b0;
	end
	else begin
		uart_rx_d1 <= uart_rxd;
		uart_rx_d2 <= uart_rx_d1;
		uart_rx_d3 <= uart_rx_d2;
	end		
end
 
//捕獲到數(shù)據(jù)下降沿(起始位0)后,拉高傳輸開始標(biāo)志位,并在第9個數(shù)據(jù)(終止位)的傳輸過程正中(數(shù)據(jù)比較穩(wěn)定)再將傳輸開始標(biāo)志位拉低,標(biāo)志傳輸結(jié)束
always@(posedge sys_clk or negedge sys_rst_n)begin
	if(!sys_rst_n)
		rx_en <= 1'b0;
	else begin 
		if(neg_uart_rxd )								
			rx_en <= 1'b1;
		//接收完第9個數(shù)據(jù)(終止位)將傳輸開始標(biāo)志位拉低,標(biāo)志傳輸結(jié)束,判斷高電平
		else if((bit_cnt == 4'd9) && (clk_cnt == BPS_CNT >> 1'b1) && (uart_rx_d3 == 1'b1) )
			rx_en <= 1'b0;
		else 
			rx_en <= rx_en;			
	end
end
 
//當(dāng)數(shù)據(jù)傳輸?shù)浇K止位時,拉高傳輸完成標(biāo)志位,并將數(shù)據(jù)輸出
always@(posedge sys_clk or negedge sys_rst_n)begin
	if(!sys_rst_n)begin
		uart_rx_done <= 1'b0;
		uart_rx_data <= 8'd0;
	end	
	//結(jié)束接收后,將接收到的數(shù)據(jù)輸出
	else if((bit_cnt == 4'd9) && (clk_cnt == BPS_CNT >> 1'd1) && (uart_rx_d3 == 1'b1))begin		
		uart_rx_done <= 1'b1;									//僅僅拉高一個時鐘周期
		uart_rx_data <= uart_rx_data_reg;	
	end							
	else begin					
		uart_rx_done <= 1'b0;									//僅僅拉高一個時鐘周期
		uart_rx_data <= uart_rx_data;
	end
end
 
//時鐘每計(jì)數(shù)一個BPS_CNT(傳輸一位數(shù)據(jù)所需要的時鐘個數(shù)),即將數(shù)據(jù)計(jì)數(shù)器加1,并清零時鐘計(jì)數(shù)器
always@(posedge sys_clk or negedge sys_rst_n)begin
	if(!sys_rst_n)begin
		bit_cnt <= 4'd0;
		clk_cnt <= 32'd0;
	end
	else if(rx_en)begin					            			//在接收狀態(tài)
		if(clk_cnt < BPS_CNT - 1'b1)begin           			//一個bit數(shù)據(jù)沒有接收完
			clk_cnt <= clk_cnt + 1'b1;              			//時鐘計(jì)數(shù)器+1
			bit_cnt <= bit_cnt;                     			//bit計(jì)數(shù)器不變
		end                                         			
		else begin                                  			//一個bit數(shù)據(jù)接收完了	
			clk_cnt <= 32'd0;                       			//清空時鐘計(jì)數(shù)器,重新開始計(jì)時
			bit_cnt <= bit_cnt + 1'b1;              			//bit計(jì)數(shù)器+1,表示接收完了一個bit的數(shù)據(jù)
		end                                         			
	end                                             			
		else begin                                  			//不在接收狀態(tài)
			bit_cnt <= 4'd0;                        			//清零
			clk_cnt <= 32'd0;                       			//清零
		end		
end
 
//在每個數(shù)據(jù)的傳輸過程正中(數(shù)據(jù)比較穩(wěn)定)將數(shù)據(jù)線上的數(shù)據(jù)賦值給數(shù)據(jù)寄存器
always@(posedge sys_clk or negedge sys_rst_n)begin
	if(!sys_rst_n)
		uart_rx_data_reg <= 8'd0;                            	//復(fù)位無接收數(shù)據(jù)
	else if(rx_en)                                           	//處于接收狀態(tài)
		if(clk_cnt == BPS_CNT >> 1'b1) begin                 	//傳輸過程正中(數(shù)據(jù)比較穩(wěn)定)
			case(bit_cnt)			                         	//根據(jù)位數(shù)決定接收的內(nèi)容是什么
				4'd1:uart_rx_data_reg[0] <= uart_rx_d3;        	//LSB最低位
				4'd2:uart_rx_data_reg[1] <= uart_rx_d3;        	//
				4'd3:uart_rx_data_reg[2] <= uart_rx_d3;        	//
				4'd4:uart_rx_data_reg[3] <= uart_rx_d3;        	//
				4'd5:uart_rx_data_reg[4] <= uart_rx_d3;        	//
				4'd6:uart_rx_data_reg[5] <= uart_rx_d3;        	//
				4'd7:uart_rx_data_reg[6] <= uart_rx_d3;        	//
				4'd8:uart_rx_data_reg[7] <= uart_rx_d3;        	//MSB最高位
				default:;                                    	//1和9分別是起始位和終止位,不需要接收
			endcase                                          	
		end                                                  	
		else                                                 	//數(shù)據(jù)不一定穩(wěn)定就不接收
			uart_rx_data_reg <= uart_rx_data_reg;            
	else
		uart_rx_data_reg <= 8'd0;								//不處于接收狀態(tài)
end	
 
endmodule 

二、封裝IP核步驟

step1: Tools---Great and Package New IP,彈出的界面點(diǎn)擊next

vivado自定義ip核,fpga開發(fā)

vivado自定義ip核,fpga開發(fā)

step2:選擇Package your current project,點(diǎn)擊Next

vivado自定義ip核,fpga開發(fā)

setp3:①選擇 ip核存放的位置? ②勾選“include .xci files” ③點(diǎn)擊next

vivado自定義ip核,fpga開發(fā)

setp4:彈出一個總結(jié)窗口,點(diǎn)擊Next

vivado自定義ip核,fpga開發(fā)

setp5:彈出Package ip 界面。如果不小心關(guān)了這個界面,可以在最左邊的“PacgeIP”

vivado自定義ip核,fpga開發(fā)

?Identification:此界面可以修改ip核的名字、ip核展示的名字等等

vivado自定義ip核,fpga開發(fā)

Compatibility:增加或者刪除適用于哪些型號的FPGA芯片,一般默認(rèn)

vivado自定義ip核,fpga開發(fā)

?File Groups :ip核文件類別,可以選擇是否包含 綜合和仿真文件

vivado自定義ip核,fpga開發(fā)

Customization Parameters:雙擊可配置參數(shù)的名字、默認(rèn)值等等

vivado自定義ip核,fpga開發(fā)

?Ports and Interfaces:ip核的輸入和輸出端口

vivado自定義ip核,fpga開發(fā)

Addressing and Memory :ip核的地址,如果PS通過AXI總線訪問PL,PS可通過這個地址識別到這個IP核,可以理解為IP核的ID

?vivado自定義ip核,fpga開發(fā)

Customazation GUI : IP核的GUI界面

setp6:Review and Packaga可看到ip核的一些總結(jié)信息,點(diǎn)擊 "Package IP" ,ip核已經(jīng)封裝完成。

vivado自定義ip核,fpga開發(fā)

?文章來源地址http://www.zghlxwxcb.cn/news/detail-779177.html

?封裝完成ip核后,可以在 ip catelog里面搜到到封裝完成的ip核,如下:

vivado自定義ip核,fpga開發(fā)

三、將IP核添加到ip核庫?

如果想將封裝好的ip核,在其他的工程里面使用,還需要將ip核文件添加到ip核庫里面。

Settings---IP---Reposilory,選擇ip的文件,點(diǎn)擊ok

vivado自定義ip核,fpga開發(fā)

?

?

?

?

?

?

?

到了這里,關(guān)于VIVADO 自定義封裝ip核(超詳細(xì))的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • FPGA vivado IP核學(xué)習(xí)筆記——單端口RAM

    FPGA vivado IP核學(xué)習(xí)筆記——單端口RAM

    1. 新建IP 在IP Catalog中找到Block Memory Generator 2. 基本配置 ①在 Component Name 位置可以修改IP名字 ② Interface Type 選擇接口類型,有Native(常規(guī))和AXI4兩種,AXI4常用于軟核控制FPGA或ZYNQ中PS端控制FPGA時使用 ③ Generate address interface with 31 bits ,將地址深度固定在32bit ④ Memory Type : 有一

    2024年04月29日
    瀏覽(30)
  • [Vivado那些事兒]將自定義 IP (HDL)添加到 Vivado 模塊設(shè)計(jì)(Block Design)

    [Vivado那些事兒]將自定義 IP (HDL)添加到 Vivado 模塊設(shè)計(jì)(Block Design)

    使用Vivado Block Design設(shè)計(jì)解決了項(xiàng)目繼承性問題,但是還有個問題,不知道大家有沒有遇到,就是新設(shè)計(jì)的自定義 RTL 文件無法快速的添加到Block Design中,一種方式是通過自定義IP,但是一旦設(shè)計(jì)的文件有問題就需要重新修改,同時需要控制接口時候還需要在AXI總線模板基礎(chǔ)上

    2024年02月02日
    瀏覽(22)
  • FPGA開發(fā)環(huán)境 Vivado

    FPGA開發(fā)環(huán)境 Vivado

    Vivado是Xilinx系列FPGA開發(fā)環(huán)境。本文記載收錄了vivado常用開發(fā)技巧,隨機(jī)記錄、隨時更新。。。 任何Xilinx相關(guān)問題都可到WELCOME TO XILINX SUPPORT!查詢 靜態(tài)時序分析(Static Timing Analysis, STA):簡介及內(nèi)容導(dǎo)航 VIVADO的綜合屬性ASYNC_REG 在XDC中作如下約束,表示對名字末尾為 _cdc_to 的寄

    2024年02月11日
    瀏覽(31)
  • 【FPGA】 十二、Vivado DDS IP核實(shí)現(xiàn)掃頻信號

    【FPGA】 十二、Vivado DDS IP核實(shí)現(xiàn)掃頻信號

    文章目錄 前言 一、DDS IP核概述 二、DDS IP核配置 三、調(diào)用DDS IP核 總結(jié) ? ? 在我前面的工程中,都是一些比較通用的設(shè)計(jì)工程,沒有用到哪一家的IP核,所以代碼具有很好的移植性;今天我就來講一下基于Xilinx廠家的芯片做一期DDS的設(shè)計(jì)與驗(yàn)證,這里我所采用的EDA工具是Viva

    2024年02月03日
    瀏覽(33)
  • FPGA開發(fā)環(huán)境安裝VIVADO

    FPGA開發(fā)環(huán)境安裝VIVADO

    ?BASYS3開發(fā)板使用的是 Xilinx 廠商的 Artix-7 FPGA 芯片,所以要使用 Xilinx 提供的配套開發(fā)軟件 Vivado ,我使用的是 Vivado 18.3 。Vivado 18.3 的版本相對來說是較為穩(wěn)定的,所以推薦給大家這個版本當(dāng)然 讀者也可安裝更新的版本,安裝步驟都是大同小異的。 第一步: 找到 Vivado 2018.

    2024年02月09日
    瀏覽(34)
  • FPGA:Vivado流水燈設(shè)計(jì)詳細(xì)流程(1)

    FPGA:Vivado流水燈設(shè)計(jì)詳細(xì)流程(1)

    基于Vivado的FPGA設(shè)計(jì)開發(fā)的流程主要包括以下步驟: 1)創(chuàng)建工程; 2)創(chuàng)建源設(shè)計(jì)文件,包括Verilog文本、IP核、模塊文件、網(wǎng)表輸入等方式; 3)行為仿真(Behavioral Simulation),Vivado自帶仿真器,也可以選擇第三方仿真軟件ModelSim等工具進(jìn)行仿真; 4)綜合(Synthesis):根據(jù)設(shè)

    2024年02月03日
    瀏覽(30)
  • FPGA中FIFO的應(yīng)用(三)——Vivado FIFO IP核的調(diào)用

    FPGA中FIFO的應(yīng)用(三)——Vivado FIFO IP核的調(diào)用

    ??作者簡介: 小瑞同學(xué) ,一個努力精進(jìn)的 FPGA 和通信學(xué)習(xí)者。 ??個人主頁:小瑞同學(xué)的博客主頁 ??個人信條:越努力,越幸運(yùn)! ?日期:2023.12.6 ??來源:自學(xué)經(jīng)歷 ??文章內(nèi)容概述:簡單介紹了 FIFO IP核 常用參數(shù)的配置,通過仿真分析了異步IP的 讀寫數(shù)據(jù) 過程。 連載

    2024年01月18日
    瀏覽(35)
  • xilinx FPGA 除法器ip核(divider)的學(xué)習(xí)和仿真(Vivado)

    xilinx FPGA 除法器ip核(divider)的學(xué)習(xí)和仿真(Vivado)

    在設(shè)計(jì)中,經(jīng)常出現(xiàn)除法運(yùn)算, 實(shí)現(xiàn)方法 : 1、移位操作 2、取模取余 3、調(diào)用除法器IP核 4、查找表 簡單學(xué)習(xí)除法器IP。 網(wǎng)上很多IP翻譯文檔,不詳細(xì)介紹,記錄幾個重要的點(diǎn): 1、三種算法模式(不同模式所消耗的資源類型不同) 2、分清除數(shù)和被除數(shù);余數(shù)模式的選擇 3、延

    2024年04月28日
    瀏覽(291)
  • FPGA開發(fā)必備軟件——Vivado,安裝教程

    FPGA開發(fā)必備軟件——Vivado,安裝教程 如果你想開始FPGA的開發(fā)學(xué)習(xí),那么Vivado是一個不可或缺的軟件。它是Xilinx推出的一款針對FPGA、SoC和ASIC開發(fā)的綜合設(shè)計(jì)環(huán)境。在這里,我們詳細(xì)介紹如何下載、安裝和配置Vivado軟件。 在Xilinx官網(wǎng)上注冊一個賬號。注冊時需要提供自己的郵

    2024年02月13日
    瀏覽(32)
  • xilinx FPGA 乘法器ip核(multipler)的使用(VHDL&Vivado)

    xilinx FPGA 乘法器ip核(multipler)的使用(VHDL&Vivado)

    一、創(chuàng)建除法ip核 ?可以選擇兩個變量數(shù)相乘,也可以選擇一個變量輸入數(shù)據(jù)和一個常數(shù)相乘 可以選擇mult(dsp資源)或者lut(fpga資源) 可以選擇速度優(yōu)先或者面積優(yōu)先 可以自己選擇輸出位寬 還有時鐘使能和復(fù)位功能 ?二、編寫VHDL程序:聲明和例化乘法器ip核 三、編寫仿真程

    2024年02月11日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包