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

FPGA開發(fā)之Vivado安裝及HLS環(huán)境配置,并實(shí)現(xiàn)流水燈實(shí)例

這篇具有很好參考價(jià)值的文章主要介紹了FPGA開發(fā)之Vivado安裝及HLS環(huán)境配置,并實(shí)現(xiàn)流水燈實(shí)例。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、HLS簡(jiǎn)介

HLS(High-Level Synthesis)高層綜合,就是將 C/C++的功能用 RTL 來實(shí)現(xiàn),將 FPGA 的組件在一個(gè)軟件環(huán)境中來開發(fā),這個(gè)模塊的功能驗(yàn)證在軟件環(huán)境中來實(shí)現(xiàn),無縫的將硬件仿真環(huán)境集合在一起,使用軟件為中心的工具、報(bào)告以及優(yōu)化設(shè)計(jì),很容易的在 FPGA 傳統(tǒng)的設(shè)計(jì)工具中生成 IP。
傳統(tǒng)的 FPGA 開發(fā),首先寫 HDL 代碼,然后做行為仿真,最后做綜合、時(shí)序分析等,最后生成可執(zhí)行文件下載到 FPGA 使用,開發(fā)周期比較漫長(zhǎng)。
使用 HLS,用高級(jí)語言開發(fā)可以提高效率。
因?yàn)樵谲浖姓{(diào)試比硬件快很多,在軟件中可以很容易的實(shí)現(xiàn)指定的功能,而且做 RTL仿真比軟件需要的時(shí)間多上千倍。

  • HLS與VHDL/Verilog
    VHDL/Verilog對(duì)于一些算法比較簡(jiǎn)單,開發(fā)周期不長(zhǎng)的來說是比較適用的,然而,一個(gè)開發(fā)過程,往往算法會(huì)比較復(fù)雜,并且可能會(huì)經(jīng)歷較長(zhǎng)時(shí)間的仿真和調(diào)試,面對(duì)這樣的問題,提出了HLS。通過高級(jí)語言編程,來實(shí)現(xiàn)功能模塊,這樣就會(huì)大大提供開發(fā)效率。
  • HLS的關(guān)鍵技術(shù)
    通過高級(jí)語言實(shí)現(xiàn)功能,并轉(zhuǎn)換為RTL電路。實(shí)際上HLS相對(duì)于一個(gè)IP生成器。
  • 技術(shù)局限性
    在性能和執(zhí)行時(shí)間上,HLS 設(shè)計(jì)的平均水平明顯較差,但在延遲和最大頻率方面,與 RTL 差異不那么明顯,且 HLS 方法還會(huì)浪費(fèi)基本資源,平均而言,HLS 使用的基本 FPGA 資源比 RTL 多 41%,在以千位為單位的 BRAM 使用情況的論文中,RTL 更勝一籌。

二、Vivado安裝

可參考以下網(wǎng)址,包含了Vivado下載及安裝破解
https://www.bilibili.com/read/cv15414254/

三、HLS實(shí)現(xiàn)流水燈開發(fā)實(shí)例

3.1 創(chuàng)建HLS工程

fpga hls,fpga開發(fā)

選擇頂層函數(shù),此處暫不管

fpga hls,fpga開發(fā)

選擇添加C仿真文件,此處暫不管

fpga hls,fpga開發(fā)

選擇相應(yīng)器件
fpga hls,fpga開發(fā)

fpga hls,fpga開發(fā)

3.2 代碼編寫

添加文件
①源文件添加
點(diǎn)擊Source,右鍵后,選擇New File,創(chuàng)建文件

具體代碼如下:
led.h

#ifndef _SHIFT_LED_H_
#define _SHIFT_LED_H_

#include "ap_int.h"
#define CNT_MAX 100000000
//#define CNT_MAX 100,100M時(shí)鐘頻率下計(jì)數(shù)一秒鐘所需要的計(jì)數(shù)次數(shù)
#define FLASH_FLAG CNT_MAX-2
// typedef int led_t;
// typedef int cnt_t;
typedef ap_int<1> led_t;
typedef ap_int<32> cnt_t;
void flash_led(led_t *led_o , led_t led_i);

#endif

led.cpp

#include "led.h"

void flash_led(led_t *led_o , led_t led_i){
#pragma HLS INTERFACE ap_vld port=led_i
#pragma HLS INTERFACE ap_ovld port=led_o
	cnt_t i;
	for(i=0;i<CNT_MAX;i++){
		if(i==FLASH_FLAG){
			*led_o = ~led_i;
		}
	}
}

②仿真測(cè)試文件添加
右鍵Test Bench,選擇New File
具體代碼如下:
test_led.cpp

#include "led.h"
#include <stdio.h>

int main(){

	led_t led_i=0x01;
	led_t led_o;
	const int SHIFT_TIME = 4;
	int i;
	for(i=0;i<SHIFT_TIME;i++){
		flash_led(&led_o , led_i);
		led_i = led_o;
		printf("shift_out is %d \n",(int)(led_o&0x01));
	}
}

3.3 綜合仿真

fpga hls,fpga開發(fā)

點(diǎn)擊project->Run C Simulation(輸出01交替,表示C仿真結(jié)果正確)

fpga hls,fpga開發(fā)

點(diǎn)擊Solution->Run C Synthesis->Active Solution

fpga hls,fpga開發(fā)

3.4 創(chuàng)建Vivado工程

按照下列圖片實(shí)例進(jìn)行即可:

fpga hls,fpga開發(fā)

fpga hls,fpga開發(fā)
fpga hls,fpga開發(fā)
fpga hls,fpga開發(fā)
fpga hls,fpga開發(fā)

選擇IP->Repository,并且點(diǎn)擊加號(hào),選擇solution,將會(huì)自動(dòng)識(shí)別到IP,識(shí)別到后,點(diǎn)擊Apply->OK

生成IP:
雙擊flash_led_1,默認(rèn)選擇
fpga hls,fpga開發(fā)
fpga hls,fpga開發(fā)

創(chuàng)建源文件,具體代碼如下:

`timescale 1ns / 1ps
module flash_led(
input wire clk ,
input wire rst_n ,
output wire led_o
);
 
wire rst ;//同步復(fù)位
wire ap_ready ;//當(dāng)前可以接收下一次數(shù)據(jù)
reg ap_start ;//IP 開始工作
reg led_i_vld ;//輸入數(shù)據(jù)有效
wire led_o_vld ;
reg led_i ;//輸入的 led 信號(hào)
wire led_o_r ;
wire ap_done ;
wire ap_idle ;
reg [1:0] delay_cnt ;
assign rst = ~rst_n ;
assign led_o = led_o_r ;
 
//----------------delay_cnt------------------
always @(posedge clk) begin
if (rst==1'b1) begin
delay_cnt <= 'd0;
end
else if(delay_cnt[1]==1'b0) begin
delay_cnt <= delay_cnt + 1'b1;
end
end
 
//----------------ap_start------------------
always @(posedge clk) begin
if (rst==1'b1) begin
ap_start <= 1'b0;
end
else if(delay_cnt[1]==1'b1)begin
ap_start <= 1'b1;
end
end
 
//----------------led_i_vld------------------
always @(posedge clk) begin
if (rst==1'b1) begin
led_i_vld <= 1'b0;
end
else if(delay_cnt[1]==1'b1)begin
led_i_vld <= 1'b1;
end
end
 
//----------------ap_i------------------
always @(posedge clk) begin
if (rst==1'b1) begin
led_i <= 1'b0;
end
else if(led_o_vld==1'b1)begin
led_i <= led_o_r ;
end
end
 
 
flash_led_0 inst_flash_led (
.led_o_V_ap_vld(led_o_vld), // output wire led_o_V_ap_vld
.led_i_V_ap_vld(led_i_vld), // input wire led_i_V_ap_vld
.ap_clk(clk), // input wire ap_clk
.ap_rst(rst), // input wire ap_rst
.ap_start(ap_start), // input wire ap_start
.ap_done(ap_done), // output wire ap_done
.ap_idle(ap_idle), // output wire ap_idle
.ap_ready(ap_ready), // output wire ap_ready
.led_o_V(led_o_r), // output wire [0 : 0] led_o_V
.led_i_V(led_i) // input wire [0 : 0] led_i_V
); 
endmodule

fpga hls,fpga開發(fā)
fpga hls,fpga開發(fā)
具體代碼如下:

##############LED define################## 
set_property PACKAGE_PIN P15 [get_ports {led_o}] 
set_property IOSTANDARD LVCMOS33 [get_ports {led_o}]

##############Reset define################## 
set_property PACKAGE_PIN P16 [get_ports {rst_n}] 
set_property IOSTANDARD LVCMOS33 [get_ports {rst_n}]

##############50M CLK define################## 
create_clock -period 20.000 -name clk -waveform {0.000 10.000} [get_ports clk]
set_property PACKAGE_PIN N18 [get_ports {clk}] 
set_property IOSTANDARD LVCMOS33 [get_ports {clk}]

fpga hls,fpga開發(fā)
運(yùn)行結(jié)果如下:
fpga hls,fpga開發(fā)

四、總結(jié)

本次實(shí)驗(yàn)了解了什么是HLS,讓我明白了在硬件邏輯難以實(shí)現(xiàn)的情況下,我們也可以通過利用C這樣的高級(jí)語言程序編寫邏輯,交由編輯器進(jìn)行轉(zhuǎn)換,雖然會(huì)耗費(fèi)更多的資源,但可以為開發(fā)者節(jié)省下寶貴的時(shí)間

五、參考資料

https://blog.csdn.net/qq_43279579/article/details/117084706
https://www.bilibili.com/read/cv15414254/
https://blog.csdn.net/QWERTYzxw/article/details/117279573文章來源地址http://www.zghlxwxcb.cn/news/detail-752622.html

到了這里,關(guān)于FPGA開發(fā)之Vivado安裝及HLS環(huán)境配置,并實(shí)現(xiàn)流水燈實(shí)例的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Vivado HLS 第1講 軟件工程師該怎么了解FPGA架構(gòu)

    Vivado HLS 第1講 軟件工程師該怎么了解FPGA架構(gòu)

    ??????????Vivado?HLS是將基于C/C++描述的算法轉(zhuǎn)化成相應(yīng)的RTL代碼,最終在FPGA上實(shí)現(xiàn)。這就要求軟件工程師對(duì)FPGA的內(nèi)部架構(gòu)有一些基本的認(rèn)識(shí),目的在于保證生成的RTL代碼在性能和資源上能夠達(dá)到很好的平衡。實(shí)際上,C語言與FPGA是有一些對(duì)應(yīng)關(guān)系的。比如: C語言中的數(shù)

    2024年02月09日
    瀏覽(20)
  • Xilinx FPGA開發(fā)環(huán)境vivado使用流程

    Xilinx FPGA開發(fā)環(huán)境vivado使用流程

    第一步:點(diǎn)擊Add Sources按鈕 第二步:選擇add or create design sources按鈕,即添加設(shè)計(jì)文件 第三步:選擇create file 文件新建完成后: 此時(shí)可以定義I/O端口,我們選擇自己在程序中編寫。 第四步:在編輯器中編寫verilog程序 XDC文件里主要是完成管腳的約束,時(shí)鐘的約束,以及組的約

    2024年02月03日
    瀏覽(34)
  • 輕松搭建FPGA開發(fā)環(huán)境:第三課——Vivado 庫編譯與設(shè)置說明

    輕松搭建FPGA開發(fā)環(huán)境:第三課——Vivado 庫編譯與設(shè)置說明

    工欲善其事必先利其器,很多人想從事 FPGA 的開發(fā),但是不知道如何下手。既要裝這個(gè)軟件,又要裝那個(gè)軟件,還要編譯仿真庫,網(wǎng)上的教程一大堆,不知道到底應(yīng)該聽誰的。所以很多人還沒開始就被繁瑣的開發(fā)環(huán)境搭建嚇退了,還沒開始就放棄了! 筆者用幾節(jié)課的時(shí)間,從

    2024年02月04日
    瀏覽(28)
  • FPGA Vivado環(huán)境下實(shí)現(xiàn)計(jì)數(shù)器

    FPGA Vivado環(huán)境下實(shí)現(xiàn)計(jì)數(shù)器

    本文實(shí)現(xiàn)的是一個(gè)簡(jiǎn)單的計(jì)數(shù)器,模塊中包含時(shí)鐘信號(hào)和復(fù)位信號(hào),計(jì)數(shù)使用的是一個(gè)四位的輸出,復(fù)位鍵有效時(shí),計(jì)數(shù)器置零,當(dāng)時(shí)鐘信號(hào)上升沿時(shí),計(jì)數(shù)加一,實(shí)現(xiàn)計(jì)數(shù)。(僅供參考) 建立工程counter,并新建一個(gè)設(shè)計(jì)文件命名為:counter ? ? 3.打開counter文件,進(jìn)行計(jì)數(shù)器

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

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

    2024年02月13日
    瀏覽(32)
  • Xilinx FPGA未使用管腳上下拉狀態(tài)配置(ISE和Vivado環(huán)境)

    Xilinx FPGA未使用管腳上下拉狀態(tài)配置(ISE和Vivado環(huán)境)

    ISE開發(fā)環(huán)境 ISE開發(fā)環(huán)境,可在如下Bit流文件生成選項(xiàng)中配置。 右鍵點(diǎn)擊 Generate Programming File ,選擇 Process Properties , 在彈出的窗口選擇 Configuration Options-Unused Pin ,選擇 Pull Down、Pull Up或者Float 。 可以看到,除了未使用管腳,一些系統(tǒng)管腳,比如JTAG,Program、Done管腳等等都可

    2024年02月06日
    瀏覽(32)
  • FPGA開發(fā) -- Vivado使用VSCode編譯帶圖文(安裝 語法校驗(yàn) 自動(dòng)縮進(jìn) )

    FPGA開發(fā) -- Vivado使用VSCode編譯帶圖文(安裝 語法校驗(yàn) 自動(dòng)縮進(jìn) )

    目錄 一 前言 Vivado 版本 Vivado 2018.03 芯片 ZYNQ-XC7Z010 VSCode 安裝最新版本就行 二 Vivado 設(shè)置編譯方式 Tools ?Text Editor 設(shè)置 VSCode 地址 ?編輯三 VSCode 插件安裝 1.?Verilog HDL/SystemVerilog ?打開vscode,打開拓展界面 ?環(huán)境變量設(shè)置 2. SystemVerilog ?編輯?設(shè)置為默認(rèn)縮進(jìn)軟件(如圖所示)

    2024年04月10日
    瀏覽(26)
  • FPGA學(xué)習(xí)——verilog實(shí)現(xiàn)流水燈

    FPGA學(xué)習(xí)——verilog實(shí)現(xiàn)流水燈

    學(xué)習(xí)芯片: EP4CE6F17C8 verilog代碼如下: 配置引腳,查看芯片的指導(dǎo)書: 燒錄運(yùn)行結(jié)果如下: 如圖我們可以看見開發(fā)板上四個(gè)led燈同時(shí)被電亮。 代碼如下: 配置引腳,查看clock和key的引腳: 運(yùn)行結(jié)果如下圖: 此時(shí)可以看見四個(gè)led燈同時(shí)閃爍。 流水燈代碼實(shí)現(xiàn): 實(shí)驗(yàn)效果圖如

    2024年02月16日
    瀏覽(34)
  • FPGA學(xué)習(xí)分享--01 led流水燈的實(shí)現(xiàn)

    FPGA學(xué)習(xí)分享--01 led流水燈的實(shí)現(xiàn)

    需求 : 博宸電子的ZYNQ7020DEV開發(fā)板 Vivado 2018.3 一定的verilog語言基礎(chǔ) 博主目前學(xué)習(xí)的是 博宸電子的ZYNQ7020DEV開發(fā)板 ,下面是關(guān)于本次分享led流水燈的原理圖 圖1 涉及本次led流水燈的電路 首先,從圖1來看,每個(gè)led端口都和一個(gè)阻值為4.7k的電阻和一個(gè)發(fā)光二極管相連,并且發(fā)光

    2024年02月04日
    瀏覽(20)
  • FPGA 學(xué)習(xí)筆記:Verilog 實(shí)現(xiàn)LED流水燈控制

    在初步了解 Xilinx Vivado 的使用后,開啟了FPGA Hello World 程序:LED 流水燈控制 在嵌入式MCU中,流水燈需要延時(shí)來實(shí)現(xiàn),F(xiàn)PGA的延時(shí),使用外部晶振來實(shí)現(xiàn) 實(shí)現(xiàn) 3個(gè) LED 流水燈控制,也就是循環(huán)依次點(diǎn)亮, LED 低電平亮, 高電平滅,F(xiàn)PGA 有一個(gè)40MHz的外部晶振,作為系統(tǒng)時(shí)鐘輸入開

    2023年04月08日
    瀏覽(32)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包