在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

如何實(shí)現(xiàn)一套FPGA工程無(wú)縫兼容兩款管腳不同的板卡?

電子電路開(kāi)發(fā)學(xué)習(xí) ? 來(lái)源:電子電路開(kāi)發(fā)學(xué)習(xí) ? 2023-11-08 14:21 ? 次閱讀

試想這樣一種場(chǎng)景,有兩款不同的FPGA板卡,它們的功能代碼90%都是一樣的,但是兩個(gè)板卡的管腳分配完全不同,一般情況下,我們需要設(shè)計(jì)兩個(gè)工程,兩套代碼,之后還需要一直維護(hù)兩個(gè)版本。 那么有沒(méi)有一種自動(dòng)化的方式,實(shí)現(xiàn)一個(gè)工程,編譯出一個(gè)程序文件,下載到這兩個(gè)不同的板卡上,都可以正常運(yùn)行呢?

本文以開(kāi)發(fā)板A和開(kāi)發(fā)板B為例,介紹如何實(shí)現(xiàn)一套FPGA工程無(wú)縫兼容兩款管腳不同的板卡?

兩款開(kāi)發(fā)板的時(shí)鐘信號(hào)分別為clk_a和clk_b,分別位于兩個(gè)不同的芯片管腳,兩個(gè)開(kāi)發(fā)板的FPGA型號(hào)完全一致,外部時(shí)鐘的頻率也一樣。

首先需要判斷當(dāng)前是哪款板卡?實(shí)現(xiàn)方式是通過(guò)兩個(gè)計(jì)數(shù)器,分別對(duì)時(shí)鐘信號(hào)進(jìn)行計(jì)數(shù),由于兩款板子的時(shí)鐘信號(hào)分別位于不同的管腳,所以只有一個(gè)計(jì)數(shù)器會(huì)累加,并達(dá)到目標(biāo)值,這樣就實(shí)現(xiàn)了板卡型號(hào)的自動(dòng)區(qū)分。

具體代碼如下:

/*********************************************************************
* Copyright ? blog.csdn.net/whik1194
* ModuleName : board_sel.v
* CreateTim : 2023年11月5日 19:16:48
* Author : mcu149
* Function : function
* Version : v1.0
* Version | Modify
* ----------------------------------
* v1.0 | first version
*********************************************************************/

module board_sel(
//Inputs
input clk_a, //100MHz
input clk_b, //100MHz

//Outputs
output reg [1:0] sel = 2'd0,
output reg rst_n = 1'b0
);

//1.parameter
// parameter LATCH_TIME = 10_000_000 / 10; //10ms
// parameter RESET_TIME = 100_000_000 / 10; //100ms
// for simulation
parameter LATCH_TIME = 5_000 / 10; //simulation, 5 us
parameter RESET_TIME = 10_000 / 10; //simulation, 10 us

//2.localparam
localparam BOARD_A = 2'd1;
localparam BOARD_B = 2'd2;

//3.reg
reg [31:0] cnt_a = 0;
reg [31:0] cnt_b = 0;

//4.wire

//5.assign

//6.always
always @ (posedge clk_a) begin
if(cnt_a < LATCH_TIME + RESET_TIME)
cnt_a <= cnt_a + 1;
end

always @ (posedge clk_b) begin
if(cnt_b < LATCH_TIME + RESET_TIME)
cnt_b <= cnt_b + 1;
end

always @ (*) begin
if(cnt_a == LATCH_TIME)
sel <= BOARD_A;
else if(cnt_b == LATCH_TIME)
sel <= BOARD_B;
end

always @ (*) begin
if((cnt_a == LATCH_TIME + RESET_TIME) || (cnt_b == LATCH_TIME + RESET_TIME))
rst_n <= 1;
end

//7.instance

endmodule //board_sel end

這里的代碼,使用了寄存器定義時(shí)賦初值0的一個(gè)小技巧,一般工程不建議這么使用。

板卡區(qū)分之后,再根據(jù)區(qū)分的結(jié)果即sel的值對(duì)輸出、輸入分別進(jìn)行選擇。

具體實(shí)現(xiàn)如下:

/*********************************************************************
* Copyright ? blog.csdn.net/whik1194
* ModuleName : board_sel.v
* CreateTim : 2023年11月5日 19:40:48
* Author : mcu149
* Function : function
* Version : v1.0
* Version | Modify
* ----------------------------------
* v1.0 | first version
*********************************************************************/

module board_dock(
//Inputs
input [1:0] sel,

input clk_a,
input clk_b,
input uart_txd,
input led1,

//Outputs
output clk,
output uart_txd_a,
output uart_txd_b,
output led1_a,
output led1_b
);

//1.parameter

//2.localparam
localparam BOARD_A = 2'd1;
localparam BOARD_B = 2'd2;
localparam DEFAULT_OUT_VALUE = 1'b1;

//3.reg

//4.wire

//5.assign
assign clk = (sel == 2'd0 ) ? DEFAULT_OUT_VALUE : ((sel == BOARD_B) ? clk_b : clk_a );
assign uart_txd_a = (sel == BOARD_A) ? uart_txd : DEFAULT_OUT_VALUE;
assign uart_txd_b = (sel == BOARD_B) ? uart_txd : DEFAULT_OUT_VALUE;
assign led1_a = (sel == BOARD_A) ? led1 : DEFAULT_OUT_VALUE;
assign led1_b = (sel == BOARD_B) ? led1 : DEFAULT_OUT_VALUE;

//6.always

//7.instance

endmodule //board_dock end

仿真文件:

`timescale 1ns/1ps

`define BRD_A
// `define BRD_B

module top_tb;

localparam PERIOD = 10; //10ns
localparam BOARD_A = 2'd1;
localparam BOARD_B = 2'd2;

reg clk_a;
reg clk_b;
reg uart_txd;
reg led1;

wire [1:0] sel;
wire rst_n;

`ifdef BRD_A
always #(PERIOD/2) clk_a <= !clk_a;
`endif

`ifdef BRD_B
always #(PERIOD/2) clk_b <= !clk_b;
`endif

initial begin
$display("testbench: %s", "top_tb");

clk_a = 0;
clk_b = 0;
uart_txd = 0;
led1 = 0;

end

always #(500_000) uart_txd <= !uart_txd;
always #(200_000) led1 <= !led1;

board_sel board_sel_ut0(
//Inputs
.clk_a(clk_a), //100MHz
.clk_b(clk_b), //100MHz

//Outputs
.sel(sel),
.rst_n(rst_n)
);

board_dock board_dock_ut0(
//Inputs
.sel(sel),
.clk_a(clk_a),
.clk_b(clk_b),
.uart_txd(uart_txd),
.led1(led1),

//Outputs
.clk(clk),
.uart_txd_a(uart_txd_a),
.uart_txd_b(uart_txd_b),
.led1_a(led1_a),
.led1_b(led1_b)
);

endmodule //top_tb end

總結(jié)

本文所提出的方式,可以在某些應(yīng)用場(chǎng)景對(duì)板卡實(shí)現(xiàn)一定的兼容性,比如用來(lái)固件在線升級(jí)所使用的Golden鏡像工程,不同的板子共用此工程,以后只需要維護(hù)一套代碼即可。

wKgaomVLKRCAXg9WAAMNdQ90RoE468.jpg

當(dāng)然這種方式也有一定的局限性,比如需要兩款板卡的FPGA芯片型號(hào)一致、晶振頻率一致,比如同樣為XC7K325T,外部輸入單端50M時(shí)鐘。







審核編輯:劉清

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

    關(guān)注

    31

    文章

    5377

    瀏覽量

    121358
  • 仿真器
    +關(guān)注

    關(guān)注

    14

    文章

    1019

    瀏覽量

    83972
  • FPGA芯片
    +關(guān)注

    關(guān)注

    3

    文章

    246

    瀏覽量

    39889

原文標(biāo)題:如何做到一套FPGA工程無(wú)縫兼容兩款不同的板卡?

文章出處:【微信號(hào):mcu149,微信公眾號(hào):電子電路開(kāi)發(fā)學(xué)習(xí)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    兩款消回音,消噪音的芯片

    兩款是消回音,消噪音的芯片資料。大家可以看下。起探討下。
    發(fā)表于 09-16 10:22

    兩款u***功放制作

    兩款u***功放制作
    發(fā)表于 08-20 14:50

    FPGA板卡如何與非FPGA板卡同步

    我有塊IN的FPGA板卡PXI-7854R和非FPGA板卡PXI-6733,請(qǐng)教各位大神,數(shù)據(jù)輸出和采集時(shí)如何將這
    發(fā)表于 12-06 20:47

    一套FPGA俄羅斯方塊的代碼

    `一套FPGA俄羅斯方塊的代碼`
    發(fā)表于 06-21 14:59

    Type-C與USB母座兩款母座焊盤(pán)放在實(shí)現(xiàn)

    Type-C母座焊盤(pán) USB母座焊盤(pán)Type-C母座、USB母座兩款母座用于充電器上,若現(xiàn)在共用塊PCB,Type-C與USB母座焊盤(pán)位置如下圖請(qǐng)教各位高手兩款母座焊盤(pán)放在齊,可否
    發(fā)表于 06-21 20:18

    請(qǐng)問(wèn)F28335和F28232這兩款芯片的引腳及其引腳上的電氣新能是否完全兼容?是否可直接替換?

    本帖最后由 只耳朵怪 于 2018-6-14 11:40 編輯 TI工程師,有個(gè)項(xiàng)目想直接從F28232升級(jí)到F28335,這兩款芯片的引腳及其引腳上的電氣新能是否完全兼容?是
    發(fā)表于 06-14 09:04

    Exar兩款多路輸出同步降壓型的可編程電源模塊

    模塊與可編程雙控制器結(jié)合起來(lái),對(duì)于要求更多電壓軌和更高電流的FPGAs 和SOCs的系統(tǒng)中都能實(shí)現(xiàn)高達(dá)30Amps輸出。  值得提的是,Exar的XRP9710和XRP9711兩款
    發(fā)表于 09-28 16:16

    如何采用LabVIEW軟件平臺(tái)構(gòu)建一套某裝備存儲(chǔ)器的檢測(cè)系統(tǒng)?

    采用NI系列PXI板卡及靈活方便的LabVIEW軟件平臺(tái),構(gòu)建了一套某裝備存儲(chǔ)器的檢測(cè)系統(tǒng)。
    發(fā)表于 05-12 06:53

    介紹一套支持語(yǔ)音交互的車(chē)載導(dǎo)航系統(tǒng)

    本文在課題組的車(chē)載導(dǎo)航系統(tǒng)和國(guó)內(nèi)兩款語(yǔ)音引擎的基礎(chǔ)上,開(kāi)發(fā)了一套支持語(yǔ)音交互的車(chē)載導(dǎo)航系統(tǒng)。
    發(fā)表于 05-14 06:28

    在rockchip平臺(tái)怎樣去實(shí)現(xiàn)一套兼容多款wifi模塊的自適應(yīng)框架呢

    在rockchip平臺(tái)怎樣去實(shí)現(xiàn)一套兼容多款wifi模塊的自適應(yīng)框架呢?rk3399的wifi模組自適應(yīng)支持多款wifi是什么技術(shù)原理?
    發(fā)表于 03-07 08:21

    E能虎年強(qiáng)勢(shì)推出兩款高品質(zhì)索尼本本電池

    E能虎年強(qiáng)勢(shì)推出兩款高品質(zhì)索尼本本電池 E能作為國(guó)內(nèi)品牌兼容筆記本電池制造商、近日推出兩款與原裝媲美的品牌兼容
    發(fā)表于 02-11 08:33 ?982次閱讀

    Annapolis Micro Systems公司推出兩款符合OpenVPX 6U技術(shù)規(guī)范FPGA板卡

    充分利用FPGA強(qiáng)大的功能來(lái)實(shí)現(xiàn)更具挑戰(zhàn)性的應(yīng)用系統(tǒng)設(shè)計(jì)。 今天向大家介紹的是Annapolis Micro Systems公司又推出兩款基于Xilinx FPGA的開(kāi)發(fā)
    發(fā)表于 02-08 10:46 ?508次閱讀

    三聯(lián)屏一套多少錢(qián)_配一套三聯(lián)屏需要什么設(shè)備(電腦)

    三聯(lián)屏,顧名思義就是臺(tái)機(jī)器將內(nèi)容顯示到三個(gè)屏幕上。三聯(lián)屏可以根據(jù)不同的需求把不樣的畫(huà)面顯示到不同的顯示屏上。本文主要介紹一下一套三聯(lián)屏需要什么設(shè)備以及多少錢(qián)一套,最后奉上
    的頭像 發(fā)表于 03-21 11:50 ?2.3w次閱讀

    altiumdesigner多少錢(qián)一套

    altiumdesigner多少錢(qián)一套 altiumdesigner是很多工程師都要用到的設(shè)計(jì)工具,那么altiumdesigner多少錢(qián)一套? altiumdesigner口碑評(píng)價(jià)很好
    的頭像 發(fā)表于 04-07 11:36 ?3.4w次閱讀
    altiumdesigner多少錢(qián)<b class='flag-5'>一套</b>

    基于FPGA的速度和位置測(cè)量板卡設(shè)計(jì)實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《基于FPGA的速度和位置測(cè)量板卡設(shè)計(jì)實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 11-08 09:49 ?0次下載
    基于<b class='flag-5'>FPGA</b>的速度和位置測(cè)量<b class='flag-5'>板卡</b>設(shè)計(jì)<b class='flag-5'>實(shí)現(xiàn)</b>
    主站蜘蛛池模板: 美女露出尿口让男人桶爽网站 | 黄色爱爱视频 | 人人人人澡 | 一级做α爰片久久毛片 | 国产成人精品免费视频大全可播放的 | 99久久免费精品高清特色大片 | 1024手机最新手机在线 | 亚洲狠狠操 | 禁h粗大太大好爽好涨受不了了 | 4399一级成人毛片 | 性欧美高清短视频免费 | 天天天天天天操 | 性xxxx黑人与亚洲 | 手机在线看片福利盒子 | 美国bj69video18视频 | 亚洲欧美日韩在线观看你懂的 | 一区二区高清在线观看 | 一级做a爰片久久毛片美女图片 | 天天干天天夜 | 乱操视频| 中文字幕天堂在线 | 玖玖在线免费视频 | 日本系列 1页 亚洲系列 | 亚洲午夜顶级嘿嘿嘿影院 | 色女仆影院 | 黄色福利站 | 午夜一级免费视频 | 欧美特级黄 | 色视频在线 | 日日干夜夜欢 | 99se亚洲综合色区 | 天天插日日射 | 国产网红主播精品福利大秀专区 | 久操视频在线播放 | 天天做天天爱天天综合网2021 | 久操久操久操 | 亚洲 丝袜 制服 欧美 另类 | www.亚洲综合| zsvdy午夜片 爱爱456高清国语在线456 | 一级毛片女人喷潮 | 黄色成人免费观看 |