那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于FPGA設(shè)計(jì)的sysGen算法系統(tǒng)設(shè)計(jì)

電子設(shè)計(jì) ? 來源:CSDN 博主 ? 作者: 沒落騎士 ? 2020-12-30 12:59 ? 次閱讀

一、前言

利用FPGA設(shè)計(jì)算法一直以來都是熱點(diǎn),同樣也是難點(diǎn)。將復(fù)雜的數(shù)學(xué)公式 模型通過硬件系統(tǒng)來搭建,在低延時(shí) 高并行性等優(yōu)勢(shì)背后極大提高了設(shè)計(jì)難度和開發(fā)周期。Xilinx公司的sysGen(system generator)工具擴(kuò)展了MATLABsimulink,提供很多IP Catalog中沒有的基礎(chǔ)模塊和針對(duì)DSP應(yīng)用的硬件模型。工程師利用豐富的模塊和MATLAB強(qiáng)大的數(shù)據(jù)處理及可視化能力能夠更快速完成設(shè)計(jì)與仿真驗(yàn)證工作。

二、sysGen算法系統(tǒng)設(shè)計(jì)

本文以個(gè)最簡(jiǎn)單的例子講述利用sysGen搭建算法IP核,并集成到IP Integrator中作為ZYNQ PS端CPU的“定制外設(shè)”。僅用于測(cè)試目的。設(shè)計(jì)需求:在sysGen中搭建系統(tǒng),將輸入定點(diǎn)整數(shù)數(shù)據(jù)*2后輸出,輸入位寬為8bit。

pIYBAF9uKDmAGlS-AACLMgeqkdk369.png

在System Generator token中設(shè)定仿真步長(zhǎng)為1sec。點(diǎn)擊需要觀測(cè)的信號(hào)連線,右擊選擇Xilinx add to viewer。啟動(dòng)仿真并啟動(dòng)Xilinx waveform viewer:

本質(zhì)上就是調(diào)用Vivado的XSim工具進(jìn)行行為仿真。仿真結(jié)果可見完成預(yù)期目標(biāo),現(xiàn)雙擊System Generator token ,選擇Compiliation類型為IP Catalog并勾選Create testbench,按下Generate生成IP核。

三、仿真測(cè)試

根據(jù)User Guide介紹sysGen是“周期和比特精準(zhǔn)的”,我們還是在Vivado環(huán)境下再次驗(yàn)證下。netlist文件夾內(nèi)子文件夾ip_catalog中為IP核示例工程,由于自動(dòng)生成了testbench,打開后直接進(jìn)行行為仿真。sysGen在創(chuàng)建testbench時(shí)會(huì)將經(jīng)過gatein和gateout的數(shù)據(jù)儲(chǔ)存到文件中,testbench進(jìn)行的工作為:將gatein數(shù)據(jù)作為測(cè)試激勵(lì)送入到相應(yīng)設(shè)計(jì)輸入端口,之后把設(shè)計(jì)輸出得到結(jié)果與gateout文件數(shù)據(jù)進(jìn)行逐一比較從而驗(yàn)證設(shè)計(jì)是否與sysGen環(huán)境下仿真結(jié)果一致。

發(fā)現(xiàn)個(gè)比較有意思的現(xiàn)象,自動(dòng)生成的testbench中clock生成并約束的50MHz,而是認(rèn)為進(jìn)行了拓展。

仿真波形如圖:

將clock處改動(dòng)為50MHz后,經(jīng)過測(cè)試發(fā)現(xiàn)如果系統(tǒng)一開始就輸入數(shù)據(jù),前幾個(gè)數(shù)據(jù)沒有被真正處理,輸出錯(cuò)誤。可能是軟件BUG吧,不過這種情況也非常少見,實(shí)際系統(tǒng)中輸入數(shù)據(jù)大多情況會(huì)啟動(dòng)一段時(shí)間后才輸入。這里等待100ns后再啟動(dòng)clock翻轉(zhuǎn):

改動(dòng)后仿真波形:

四、AXI-Stream總線形式IP

到此算法IP的設(shè)計(jì)與驗(yàn)證結(jié)束。如果想將這個(gè)IP核導(dǎo)入到IP Integrator中作為CPU的外設(shè),其接口必須滿足AXI總線標(biāo)準(zhǔn),因此回到sysGen中更改端口名稱和位寬。端口要符合AXI-Stream標(biāo)準(zhǔn)信號(hào)名稱,位寬為8bit整數(shù)倍。

o4YBAF9uKEiAVeSPAARNJArcqqo731.png

生成IP核后,打開新的工程,導(dǎo)入該IP核到repository。

五、Block Design系統(tǒng)搭建

系統(tǒng)結(jié)構(gòu)與上一篇該系列博文類似,均是以AXI DMA為核心的Loop系統(tǒng),只是將AXI-Stream Data FIFO改成了自定義IP核。由于IP核slave和master接口只包含tdata和tvalid信號(hào),因此需要添加接口銜接的一些簡(jiǎn)單邏輯。tready信號(hào)和tkeep信號(hào)直接連接constant使用常數(shù)驅(qū)動(dòng),DMA的s_axis_s2mm接口的tlast由wrapper內(nèi)計(jì)數(shù)器邏輯驅(qū)動(dòng),將system中FCLK_CLK0 peripheral_aresetn m_axis_tvalid和s_axis_s2mm_tlast信號(hào)引出到wrapper中。

有一點(diǎn)比較坑:自定義IP通過AXI總線與DMA互聯(lián)時(shí),總線下相應(yīng)的接口不一定會(huì)正確對(duì)應(yīng),所以需要分別將兩端的每個(gè)接口相連。可以通過打開綜合后的設(shè)計(jì)來確認(rèn)連線無誤。

自動(dòng)生成wrapper后改動(dòng)添加代碼如下:
`timescale 1 ps / 1 ps

module user_wrapper
(DC,
DDR_addr,
DDR_ba,
DDR_cas_n,
DDR_ck_n,
DDR_ck_p,
DDR_cke,
DDR_cs_n,
DDR_dm,
DDR_dq,
DDR_dqs_n,
DDR_dqs_p,
DDR_odt,
DDR_ras_n,
DDR_reset_n,
DDR_we_n,
//FCLK_CLK0,
FIXED_IO_ddr_vrn,
FIXED_IO_ddr_vrp,
FIXED_IO_mio,
FIXED_IO_ps_clk,
FIXED_IO_ps_porb,
FIXED_IO_ps_srstb,
RES,
SCLK,
SDIN,
VBAT,
VDD
//m_axis_tvalid,
//peripheral_aresetn,
//s_axis_s2mm_tlast
);
output DC;
inout [14:0]DDR_addr;
inout [2:0]DDR_ba;
inout DDR_cas_n;
inout DDR_ck_n;
inout DDR_ck_p;
inout DDR_cke;
inout DDR_cs_n;
inout [3:0]DDR_dm;
inout [31:0]DDR_dq;
inout [3:0]DDR_dqs_n;
inout [3:0]DDR_dqs_p;
inout DDR_odt;
inout DDR_ras_n;
inout DDR_reset_n;
inout DDR_we_n;
//output FCLK_CLK0;
inout FIXED_IO_ddr_vrn;
inout FIXED_IO_ddr_vrp;
inout [53:0]FIXED_IO_mio;
inout FIXED_IO_ps_clk;
inout FIXED_IO_ps_porb;
inout FIXED_IO_ps_srstb;
output RES;
output SCLK;
output SDIN;
output VBAT;
output VDD;
//output [0:0]m_axis_tvalid;
//output [0:0]peripheral_aresetn;
//input s_axis_s2mm_tlast;

localparam DATA_NUM = 256;

wire DC;
wire [14:0]DDR_addr;
wire [2:0]DDR_ba;
wire DDR_cas_n;
wire DDR_ck_n;
wire DDR_ck_p;
wire DDR_cke;
wire DDR_cs_n;
wire [3:0]DDR_dm;
wire [31:0]DDR_dq;
wire [3:0]DDR_dqs_n;
wire [3:0]DDR_dqs_p;
wire DDR_odt;
wire DDR_ras_n;
wire DDR_reset_n;
wire DDR_we_n;
wire FCLK_CLK0;
wire FIXED_IO_ddr_vrn;
wire FIXED_IO_ddr_vrp;
wire [53:0]FIXED_IO_mio;
wire FIXED_IO_ps_clk;
wire FIXED_IO_ps_porb;
wire FIXED_IO_ps_srstb;
wire RES;
wire SCLK;
wire SDIN;
wire VBAT;
wire VDD;
wire [0:0]m_axis_tvalid;
wire [0:0]peripheral_aresetn;
wire s_axis_s2mm_tlast;

reg [8-1:0] cnt;
wire add_cnt;
wire end_cnt;

system system_i
(.DC(DC),
.DDR_addr(DDR_addr),
.DDR_ba(DDR_ba),
.DDR_cas_n(DDR_cas_n),
.DDR_ck_n(DDR_ck_n),
.DDR_ck_p(DDR_ck_p),
.DDR_cke(DDR_cke),
.DDR_cs_n(DDR_cs_n),
.DDR_dm(DDR_dm),
.DDR_dq(DDR_dq),
.DDR_dqs_n(DDR_dqs_n),
.DDR_dqs_p(DDR_dqs_p),
.DDR_odt(DDR_odt),
.DDR_ras_n(DDR_ras_n),
.DDR_reset_n(DDR_reset_n),
.DDR_we_n(DDR_we_n),
.FCLK_CLK0(FCLK_CLK0),
.FIXED_IO_ddr_vrn(FIXED_IO_ddr_vrn),
.FIXED_IO_ddr_vrp(FIXED_IO_ddr_vrp),
.FIXED_IO_mio(FIXED_IO_mio),
.FIXED_IO_ps_clk(FIXED_IO_ps_clk),
.FIXED_IO_ps_porb(FIXED_IO_ps_porb),
.FIXED_IO_ps_srstb(FIXED_IO_ps_srstb),
.RES(RES),
.SCLK(SCLK),
.SDIN(SDIN),
.VBAT(VBAT),
.VDD(VDD),
.m_axis_tvalid(m_axis_tvalid),
.peripheral_aresetn(peripheral_aresetn),
.s_axis_s2mm_tlast(s_axis_s2mm_tlast));

always @(posedge FCLK_CLK0)begin
if(!peripheral_aresetn)begin
cnt end
else if(add_cnt)begin
if(end_cnt)
cnt else
cnt end
end

assign add_cnt = m_axis_tvalid;
assign end_cnt = add_cnt && cnt== DATA_NUM-1;

assign s_axis_s2mm_tlast = end_cnt;

endmodule

user_wrapper

當(dāng)自定義IP核輸出256個(gè)數(shù)據(jù)時(shí),拉高tlast信號(hào)結(jié)束傳輸。打開綜合后的設(shè)計(jì),添加調(diào)試探針,抓取DMA與自定義IP之間的接口信號(hào),set up debug后完成接下來的流程。

六、軟硬件聯(lián)調(diào)

在硬件系統(tǒng)中定義數(shù)據(jù)幀長(zhǎng)度為256個(gè),數(shù)據(jù)位寬為16bit,因此C代碼中DMA啟動(dòng)傳輸函數(shù)中數(shù)據(jù)長(zhǎng)度參數(shù)為512byte。測(cè)試數(shù)據(jù)生成與檢測(cè)代碼非常簡(jiǎn)單:

我們直接查看ILA抓取AXI S總線波形:


看到CPU產(chǎn)生數(shù)據(jù)從1到4重復(fù)遞增,IP核輸出結(jié)果從2到8重復(fù)遞增,輸出為輸入的2倍。

傳輸完成后進(jìn)入DMA發(fā)送和接收中斷,軟件檢測(cè)結(jié)果正確。在Memory窗口能夠直接查看內(nèi)存絕對(duì)地址里的數(shù)據(jù),選定DDR接收緩存區(qū)起始地址,其中的數(shù)據(jù)與AXI總線傳回?cái)?shù)據(jù)一致,證明系統(tǒng)聯(lián)調(diào)成功。之后任意算法模塊均可采用本文方式進(jìn)行設(shè)計(jì)和集成,可以說一勞永逸!

編輯:hfy


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    為什么FPGA屬于硬件,還需要搞算法

    交流學(xué)習(xí),共同進(jìn)步。 交流問題(一) Q:為什么FPGA屬于硬件,還需要搞算法? 剛?cè)腴T準(zhǔn)備學(xué)fpga但一開始學(xué)的是語(yǔ)法,感覺像是電路用軟件語(yǔ)言描述出來,fpga
    發(fā)表于 09-09 16:54

    FPGA-5G通信算法的基本套路

    ? 一個(gè)完整的通信系統(tǒng),是十分龐大的,沒有幾百上千人,在短時(shí)間內(nèi)是做不好的。本文僅僅針對(duì)5G NR中的基帶算法部分,做一個(gè)簡(jiǎn)單梳理。 對(duì)于5G通信系統(tǒng), 站在基站側(cè)的角度,那么下行方向的整個(gè)處理
    發(fā)表于 08-15 17:34

    基于 FPGA 的會(huì)議系統(tǒng)設(shè)計(jì)

    比較好的魯棒性。Adaboost 是一種 迭代算法,其核心思想是針對(duì)同一個(gè)訓(xùn)練集訓(xùn)練不同的弱分類器,然后把這些弱 分類器集合起來,構(gòu)成一個(gè)更強(qiáng)的最終分類器。Adaboost 算法系統(tǒng)具有較高的 檢測(cè)
    發(fā)表于 08-01 18:40

    FPGA在自動(dòng)駕駛領(lǐng)域有哪些應(yīng)用?

    通過實(shí)現(xiàn)控制算法來增加系統(tǒng)的安全性和穩(wěn)定性。例如,FPGA可以用于實(shí)現(xiàn)車輛的防碰撞系統(tǒng),通過實(shí)時(shí)監(jiān)測(cè)并處理傳感器數(shù)據(jù),預(yù)測(cè)并避免潛在的碰撞風(fēng)險(xiǎn)。 四、具體實(shí)例以國(guó)內(nèi)某個(gè)自動(dòng)豪華車型為例
    發(fā)表于 07-29 17:09

    FPGA在人工智能中的應(yīng)用有哪些?

    FPGA可以快速調(diào)整其硬件結(jié)構(gòu)以適應(yīng)新的算法,而無需更換整個(gè)硬件系統(tǒng)。 二、云計(jì)算加速FPGA也被廣泛應(yīng)用于云計(jì)算領(lǐng)域,用于加速各種網(wǎng)絡(luò)功能,如數(shù)據(jù)包的控制、分類和改寫等。這樣可以提
    發(fā)表于 07-29 17:05

    基于FPGA的指紋識(shí)別系統(tǒng)設(shè)計(jì)

    隨著人們對(duì)安全問題的日益重視,指紋識(shí)別作為一種高效、可靠的生物識(shí)別技術(shù),在多個(gè)領(lǐng)域得到了廣泛應(yīng)用。本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于FPGA的嵌入式指紋識(shí)別系統(tǒng),該系統(tǒng)利用FPGA的高集成度、低
    的頭像 發(fā)表于 07-17 16:33 ?1490次閱讀

    基于FPGA的CCD工業(yè)相機(jī)系統(tǒng)設(shè)計(jì)

    基于FPGA的CCD工業(yè)相機(jī)系統(tǒng)設(shè)計(jì)是一個(gè)綜合性的項(xiàng)目,它結(jié)合了硬件電路設(shè)計(jì)、FPGA編程以及圖像處理技術(shù)。以下是一個(gè)詳細(xì)的系統(tǒng)設(shè)計(jì)方案,包括設(shè)計(jì)概述、硬件架構(gòu)、
    的頭像 發(fā)表于 07-17 11:24 ?1365次閱讀

    基于FPGA的圖像采集與顯示系統(tǒng)設(shè)計(jì)

    源和固有的并行處理能力,在數(shù)字信號(hào)處理、硬件加速、汽車電子等領(lǐng)域得到了廣泛應(yīng)用。在圖像采集與顯示系統(tǒng)中,FPGA能夠?qū)崿F(xiàn)高速、并行的數(shù)據(jù)處理,顯著提高系統(tǒng)的實(shí)時(shí)性和性能。本文設(shè)計(jì)了一個(gè)基于FP
    的頭像 發(fā)表于 07-17 10:58 ?2077次閱讀

    FPGA能實(shí)現(xiàn)什么樣的算法

    FPGA功能如此強(qiáng)大,請(qǐng)問用FPGA能實(shí)現(xiàn)或者比較適合實(shí)現(xiàn)什么樣的算法
    發(fā)表于 05-26 20:18

    基于FPGA的實(shí)時(shí)邊緣檢測(cè)系統(tǒng)設(shè)計(jì),Sobel圖像邊緣檢測(cè),FPGA圖像處理

    摘要 :本文設(shè)計(jì)了一種 基于 FPGA 的實(shí)時(shí)邊緣檢測(cè)系統(tǒng) ,使用OV5640 攝像頭模塊獲取實(shí)時(shí)的視頻圖像數(shù)據(jù),提取圖像邊緣信息并通過 VGA顯示。FPGA 內(nèi)部使用流水線設(shè)計(jì)和 并行運(yùn)算加速
    發(fā)表于 05-24 07:45

    算法系列:彩色轉(zhuǎn)灰度

    今天和大俠簡(jiǎn)單聊一聊彩色轉(zhuǎn)灰度的算法,話不多說,上貨。 一、基礎(chǔ)  對(duì)于彩色轉(zhuǎn)灰度,有一個(gè)很著名的心理學(xué)公式: Gray = R*0.299 + G*0.587 + B*0.114 二
    發(fā)表于 05-22 19:02

    基于FPGA的常見的圖像算法模塊總結(jié)

    意在給大家補(bǔ)充一下基于FPGA的圖像算法基礎(chǔ),于是講解了一下常見的圖像算法模塊,經(jīng)過個(gè)人的總結(jié),將知識(shí)點(diǎn)分布如下所示。
    的頭像 發(fā)表于 04-28 11:45 ?660次閱讀
    基于<b class='flag-5'>FPGA</b>的常見的圖像<b class='flag-5'>算法</b>模塊總結(jié)

    基于 FPGA 的光纖混沌加密系統(tǒng)

    FPGA 設(shè)計(jì)加密算法具有安全性高,加密速度快,開發(fā)周期短,開發(fā)成本較低,可重配,可靠性高以及移植性好等優(yōu)點(diǎn)。 3.2 混沌序列密鑰設(shè)計(jì) 混沌序列的產(chǎn)生主要有兩類:一類是利用微分方程表示的混沌系統(tǒng)
    發(fā)表于 04-26 17:18

    基于FPGA的光纖通信加密系統(tǒng)

    FPGA 設(shè)計(jì)加密算法具有安全性高,加密速度快,開發(fā)周期短,開發(fā)成本較低, 可重配,可靠性高以及移植性好等優(yōu)點(diǎn)。 系統(tǒng)鏈路部分采用 Aurora 協(xié)議,該協(xié)議是一款輕量級(jí)的光纖鏈路協(xié)議,具有冗余少,可定制度高,鏈路速率快等特點(diǎn)。
    發(fā)表于 04-26 11:33 ?1361次閱讀
    基于<b class='flag-5'>FPGA</b>的光纖通信加密<b class='flag-5'>系統(tǒng)</b>

    算法系列:基于 FPGA 的圖像邊緣檢測(cè)系統(tǒng)設(shè)計(jì)(sobel算法

    今天給大俠帶來基于 FPGA 的圖像邊緣檢測(cè)設(shè)計(jì),話不多說,上貨。 設(shè)計(jì)流程如下:mif文件的制作→ 調(diào)用 ip 核生成rom以及仿真注意問題→ 灰度處理→ 均值濾波:重點(diǎn)是3*3 像素陣列
    發(fā)表于 03-26 16:40
    真人百家乐出千| 太阳城百家乐官网的分数| 百家乐官网怎么才能包赢| 大发888赢钱| 现场百家乐官网的玩法技巧和规则| 大发888皇家赌场| 百家乐官网用品| 鄄城县| 线上百家乐信誉| 百家乐官网博彩开户博彩通 | 百家乐最新投注方法| 百家乐官网娱乐城网站| 豪享博百家乐的玩法技巧和规则 | 碧桂园太阳城二手房| 网上百家乐官网公司| 赣榆县| 路劲太阳城怎么样| 百家乐投注很不错| KTV百家乐官网的玩法技巧和规则| 现金棋牌| 博彩网百家乐全讯网| 百家乐官网软件辅助器| 超级皇冠网分布图| 水果机破解器| 百家乐高人破解| 百家乐官网走势图| 淘宝皇冠网店| 大发888官方 hplsj| 澳门百家乐官网怎玩| bet365网址器| 娱乐城百家乐送白菜| 新世纪百家乐官网的玩法技巧和规则 | 澳门百家乐官网娱乐城送彩金| 888娱乐城返水| 百家乐程序开户发| Bet百家乐官网娱乐城| 永利高百家乐官网网址| 大发888缺少casino| 如何胜百家乐的玩法技巧和规则 | 澳门百家乐官网免费开户| 新余市|