2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

Vivado開發(fā)套件設(shè)計(jì)指南(2)——加法器設(shè)計(jì)——變量(上)

 印度阿三17 2019-09-06

目錄

1 簡介

在上一篇博文中筆者介紹了Vivado?設(shè)計(jì)套件的概要,用途,優(yōu)點(diǎn),開發(fā)思路等等。這一篇博文中,我就不啰嗦直接進(jìn)入正題,以最簡單的變量加法器作為例子,從HLSVivado再到SDK走一遍流程,讓讀者更快地體會(huì)到Vivado這一開發(fā)技巧的便捷性,為之后最更復(fù)雜的設(shè)計(jì)打下最基本的地基。

2 HLS設(shè)計(jì)

首先要做的是在Vivado HLS上設(shè)計(jì)我們所需要的加法器IP核。

這里科普一下IP核:IP核就是知識(shí)產(chǎn)權(quán)核或知識(shí)產(chǎn)權(quán)模塊的意思,在EDA技術(shù)開發(fā)中具有十分重要的地位。美國著名的Dataquest咨詢公司將半導(dǎo)體產(chǎn)業(yè)的IP定義為“用于ASIC或FPGA中的預(yù)先設(shè)計(jì)好的電路功能模塊”。IP主要分為軟IP、固IP和硬IP。軟IP是用Verilog/VHDL等硬件描述語言描述的功能塊,但是并不涉及用什么具體電路元件實(shí)現(xiàn)這些功能。固IP是完成了綜合的功能塊。硬IP提供設(shè)計(jì)的最終階段產(chǎn)品——掩膜(來自百度百科)。相信會(huì)看這一博文的各位一定是很清楚的,這里我為了再多廢話一點(diǎn),我們平時(shí)做C程序設(shè)計(jì)總是會(huì)自定義一些 子函數(shù) 方便主函數(shù)的調(diào)用并使得主函數(shù)更精簡,這些函數(shù)一般都是在CPU上跑的,而IP核可以理解成在硬件上通過電路實(shí)現(xiàn)出來的 子函數(shù) ,起著數(shù)據(jù)處理或交換等作用。

言歸正傳,我們從最基本的開始一步一步做。

(1)創(chuàng)建工程

按照紅色框框來,先創(chuàng)建工程。

在這里插入圖片描述
放到全英文路徑,命名工程。

在這里插入圖片描述
點(diǎn)擊 New File… 創(chuàng)建所需的文件,一是頭文件,二是頂層函數(shù)文件。IP核 就是根據(jù) 頂層文件 綜合出來的,非常重要。相繼添加 add.cppadd.h 。添加完成后 Design Files 框中就會(huì)有剛添加的兩個(gè)文件,此時(shí)上面的 Top Function 框是還沒有東西,這里等我們寫完程序后再在工程中設(shè)置就可以。

在這里插入圖片描述
然后添加testbench測試文件,這在做C綜合過程中也是必不可少的,添加方法更上面添加頂層文件和頭文件是一樣的。

在這里插入圖片描述
然后選擇硬件,我用的開發(fā)硬件是黑金的AX7020板子,根據(jù)芯片型號(hào)這里選擇的是 xc7020clg400-2 ,讀者在開發(fā)的時(shí)候需要根據(jù)自己的硬件選擇一致的。左邊的 Solution 不用變,之后的博文會(huì)介紹。

在這里插入圖片描述
這樣就完成工程創(chuàng)建了,如果出現(xiàn)以下錯(cuò)誤不用管它,直接點(diǎn) OK 就可以了。

在這里插入圖片描述
然后軟件就會(huì)打開設(shè)計(jì)界面,如下圖所示。

在這里插入圖片描述

(2)程序設(shè)計(jì)

雙擊 add.cpp ,如上圖所示,并添加 頂層文件 的代碼。如下:

int add(int a, int b)
{
	return (a b);
}

然后雙擊 add.h ,添加 頭文件 的代碼。如下:

#ifndef add_h_
#define add_h_
int add(int, int);
#endif

最后雙擊 add_tb.cpp ,添加 testbench 的代碼。如下:

#include "add.h"
#include <iostream>
#include <cstdio>
#include <fstream>
int main()
{
	int a, b;
	a = 5;
	b = 10;
	int res;
	res = add(a, b);
	if(res == 15)
	{
		printf("OK");
		return 0;
	}
	else
		return 1;
}

關(guān)于這些程序的寫法,相信有過C語言基礎(chǔ)的讀者應(yīng)該都比較清楚,篇幅有限,筆者就先不寫了。這里指的提的一點(diǎn)是,testbench文件 中一般都會(huì)有一個(gè)驗(yàn)證頂層函數(shù)是否正確的語句,比如這里我用的 res == 15表示加法器的輸出與預(yù)想一致,那么返回值為0。如果一個(gè) main 函數(shù)的返回值是0的話,程序就是正確的,如果返回值是1的話(條件是我們自己設(shè)定的),程序在做C仿真的時(shí)候是會(huì)出現(xiàn)錯(cuò)誤的。

(3)四步曲

第一步,做 C仿真(C Simulation)。

在這里插入圖片描述
看到下圖就是 C仿真 成功了,上面打印出了 OK 標(biāo)識(shí),與我們程序設(shè)定的驗(yàn)證成立條件是一致的,這里讀者可以自己改一下數(shù)字嘗試,看驗(yàn)證不成立的時(shí)候是不是會(huì)出現(xiàn)仿真出錯(cuò)的提示,這里我節(jié)省一下篇幅,留給讀者嘗試。

在這里插入圖片描述
第二步,做 C綜合(C Synthesis),點(diǎn)擊下圖紅色框框的按鈕,就在上一步 C仿真 的右邊。

在這里插入圖片描述
會(huì)出現(xiàn)下圖錯(cuò)誤,因?yàn)槲覀儎偛艣]有 指定頂層模塊 。根據(jù)提示做就可以了。
在這里插入圖片描述
點(diǎn)擊菜單欄 Project —— Project Settings… —— Synthesis ,然后根據(jù)下圖點(diǎn)擊就可以了。

在這里插入圖片描述
之后再點(diǎn)擊一次 C綜合(C Synthesis) 按鈕,就會(huì)出現(xiàn)下圖所示的結(jié)果。

在這里插入圖片描述
第三步,做 C/RTL聯(lián)合仿真(C/RTL Cosimulation) ,點(diǎn)擊下圖中的紅色框框,在上一步 C綜合 的右邊。

在這里插入圖片描述
紅色框框不用設(shè)置,直接點(diǎn)擊 OK 就可以。

在這里插入圖片描述
聯(lián)合仿真之后出現(xiàn)下面的結(jié)果就是沒有問題的。

在這里插入圖片描述
第四步,點(diǎn)擊下圖紅色框框的按鈕,導(dǎo)出RTL(Export RTL) 也就是我們一直在說的 IP核 了。

在這里插入圖片描述
直接點(diǎn)擊 OK 就可以了。

在這里插入圖片描述
導(dǎo)出后如下圖所示,左邊的四個(gè)框從上到下是剛做完的四步曲對(duì)應(yīng)的四個(gè)結(jié)果,從上到下分別對(duì)應(yīng)到 C仿真 、導(dǎo)出RTL、C/RTL聯(lián)合綜合C綜合 。

在這里插入圖片描述

2 HLS設(shè)計(jì)(番外)

上面的設(shè)計(jì)存在一個(gè)問題,就是這樣綜合出來的一個(gè) IP核,ZYNQ處理系統(tǒng)是沒法去用它的,因?yàn)閿?shù)據(jù)不知道怎么放到IP核的輸入,更不知道怎么把輸出取出來,因此這里加入一個(gè) 番外,告訴讀者最重要的一件事情——添加 AXI接口協(xié)議 。這一塊筆者在初學(xué)的時(shí)候查閱了很多資料,大多都沒有提及,因此走了很多彎路,這里單獨(dú)放到一個(gè)番外章節(jié)旨在提醒讀者不要忘記這個(gè)重要的步驟。
怎么添加呢?點(diǎn)擊到 add.cpp 頂層文件,再點(diǎn)擊 Directive (我將其稱為綜合引導(dǎo),用來引導(dǎo)HLS按照我們希望的綜合方向去走),如下圖所示。

在這里插入圖片描述
然后點(diǎn)擊 Directive 下面的三個(gè)綠點(diǎn)對(duì)應(yīng)到的對(duì)象,分別是 add 頂層函數(shù)(頂層模塊)、變量 a和變量 b ,分別用右鍵點(diǎn)擊這三個(gè)對(duì)象,然后點(diǎn) Insert Directive… 。然后按照下圖選擇 Directive 類型 INTERFACE ,再選擇 mode 類型為 s_axiite 。這里選擇接口協(xié)議為AXI協(xié)議,關(guān)于AXI協(xié)議是什么,之后的博文會(huì)補(bǔ)充,現(xiàn)在我們先用著。

在這里插入圖片描述
add 、ab 三個(gè)對(duì)象添加同樣的引導(dǎo),如下圖所示。

在這里插入圖片描述
最后再做一下四步曲就可以了,其實(shí)可以直接做 C綜合導(dǎo)出RTL ,但是保險(xiǎn)起見,而且速度也很快,我們就都做一遍。再補(bǔ)充一點(diǎn), C仿真C綜合導(dǎo)出RTL 是必不可少的,但是 C/RTL聯(lián)合綜合 對(duì)一些比較大的模塊可能會(huì)非常耗時(shí),如果讀者對(duì)自己寫的程序有信心的話,其實(shí)是可以跳過的。

現(xiàn)在我們已經(jīng)有了加法器的 IP核 了,接下來就是把它用起來。

3 Vivado設(shè)計(jì)

(1)創(chuàng)建工程

首先創(chuàng)建工程項(xiàng)目,命名并存放在全英文路徑中,然后點(diǎn)擊 Next

在這里插入圖片描述
點(diǎn)擊下一步選擇項(xiàng)目類型為 RTL Project ,下面的選項(xiàng)框選上,然后點(diǎn)擊 Next 。

在這里插入圖片描述
最后選擇硬件型號(hào)即可,跟前面在 HLS 中選擇是一樣的。

在這里插入圖片描述

(2)硬件電路連接

第一步,把 自定義IP核 添加到 IP目錄 中,如下圖點(diǎn)擊。

在這里插入圖片描述
然后找到之前利用 HLS 生成的項(xiàng)目路徑,找到其中的 ip 文件夾,如下圖所示。

在這里插入圖片描述
出現(xiàn)下圖所示的 IP核 ,點(diǎn)擊 OK 即可。

在這里插入圖片描述
第二步,創(chuàng)建可視化的頂層文件,并連接電路。如下圖所示點(diǎn)擊 Create Block Design ,然后彈出對(duì)話框,不用改名字,直接點(diǎn)擊 OK ,完成 Block Design 的創(chuàng)建。

在這里插入圖片描述
在新出現(xiàn)的 Diagram 框中點(diǎn)擊 號(hào)或者在框內(nèi)右鍵再點(diǎn)擊 Add IP… ,加入我們剛才設(shè)計(jì)的加法器IP核 Add ,如下圖所示。

在這里插入圖片描述
在搜索欄中分別輸入 ZYNQHLS 以快速找到我們想要的 IP核 ,雙擊添加到我們的 Block Design

在這里插入圖片描述在這里插入圖片描述
出現(xiàn)下圖結(jié)果,然后需要配置 ZYNQ處理系統(tǒng) 的相關(guān)參數(shù)。

在這里插入圖片描述
雙擊 ZYNQ7 Processing System ,配置 串口通信UART ,用于在PC上與硬件通信;配置 DDR3 ,用于數(shù)據(jù)的存儲(chǔ),根據(jù)硬件上 DDR 型號(hào)選擇最相近的即可。如下圖所示。最后點(diǎn)擊 OK 完成配置。

在這里插入圖片描述
在這里插入圖片描述
回到 Diagram 界面,分別點(diǎn)擊 Run Connection AutomationRun Block Automation ,完成自動(dòng)連線和引出必要端口,如下圖所示。

在這里插入圖片描述
Run Connection Automation 對(duì)話框中直接點(diǎn)擊 OK 。

在這里插入圖片描述
Run Block Automation 對(duì)話框中直接點(diǎn)擊 OK 。

在這里插入圖片描述
得到如下電路圖,然后點(diǎn)擊 Validate Design 驗(yàn)證 Block Design 是否有錯(cuò)誤。

在這里插入圖片描述
出現(xiàn)以上信息就是大功告成了,接下來的操作就是走走流程就可以了。

(3)硬件信息輸出

第一步, 創(chuàng)建HDL封裝(Create HDL Wrapper) ,按照下圖三個(gè)紅色方框從上到下依次點(diǎn)擊,然后在出現(xiàn)的對(duì)話框點(diǎn)擊 OK 即可。

在這里插入圖片描述
在這里插入圖片描述
第二步,生成硬件輸出(Generate Output Products) ,如下圖所示。彈出的 Generate Output Products 直接點(diǎn)擊 Generate 即可,對(duì)話框中的 Number of jobs 表示想用幾個(gè)CPU線程去完成這個(gè)輸出,線程越多速度生成硬件心機(jī)就越快。

在這里插入圖片描述
在這里插入圖片描述
第三步,點(diǎn)擊 Run Implementation 運(yùn)行項(xiàng)目,對(duì)話框一直點(diǎn)擊 OK 即可。

在這里插入圖片描述
在這里插入圖片描述
第四步,第三步完成后會(huì)出現(xiàn) Implementation Completed 對(duì)話框,可以看到設(shè)計(jì)的硬件實(shí)現(xiàn)的可視化結(jié)果圖(點(diǎn)擊 Open Implemented Design 再點(diǎn)擊 OK ),也可以不看,直接生成含有硬件信息的 bit流(Generate Bitstream) ,如下圖所示??梢灾苯釉趯?duì)話框中生成,也可以到左側(cè) Flow Navigator 導(dǎo)航欄中去操作生成,彈出的 Bitstream Generation Completed 對(duì)話框可以不看,直接點(diǎn)擊 Cancel ,讀者有興趣的話也可以自行去點(diǎn)開看一下結(jié)果。

在這里插入圖片描述
在這里插入圖片描述
第五步,導(dǎo)出硬件信息(Export Hardware) ,按照下圖點(diǎn)擊,彈出的 Export Hardware 對(duì)話框把 Include Bitstream 選上,然后點(diǎn) OK
在這里插入圖片描述
搞定,Vivado 軟件上的操作到此為止,接下來就是 SDK 的操作了。直接從 Vivado 軟件中運(yùn)行 SDK, 如下圖,彈出的 Launch SDK 對(duì)話框直接點(diǎn)擊 OK
在這里插入圖片描述
補(bǔ)充一點(diǎn),在每一步操作之后,軟件右上角都會(huì)有一個(gè)軟件運(yùn)行狀態(tài)的指示區(qū),指示現(xiàn)在軟件正在干什么活,讀者在做完每一步操作都等它提示操作完成之后,再做下一步,避免出現(xiàn)問題。

由于本博文講的比較詳細(xì),篇幅量較大,放在一個(gè)博文中讀者第二次看也不方便變,所以筆者把剩下的工作放到下一篇博文中。

來源:https://www./content-4-441201.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多