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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何設計參數化數據選擇器

FPGA自習室 ? 來源:FPGA自習室 ? 作者:FPGA自習室 ? 2022-03-30 14:15 ? 次閱讀

需求:

FPGA設計中,大部分情況下我們都得使用到數據選擇器。并且為了設計參數化,可調,通常情況下我們需要一個參數可調的數據選擇器,比如M選1,M是可調的參數。

如果,數據選擇器是不帶優先級的,我們可以使用 verilog VHDL中的二維數組進行設計 例如,這樣綜合編譯器也是可以正確生成對應的電路。

reg[7:0]din[1:0];assign dout = din[sel];

當我們,需要設計一個參數化的數據選擇器時呢?我們該如何設計呢?以下羅列三種實現方式

方式一:嵌套if來實現:

假設我們的多路選擇器,在某些情況下最多位M路,那么我們可以嵌套M個if,這樣,我們就設計出了參數可調 2~M的多路選擇器。

always@(*)begin    if(sel[0])//1        dout = din[0*DATA_SIZE+:DATA_SIZE];    else if(sel[1])//2        dout = din[1*DATA_SIZE+:DATA_SIZE];    else if(sel[2])//3        dout = din[2*DATA_SIZE+:DATA_SIZE];    else if(sel[3])//4        dout = din[3*DATA_SIZE+:DATA_SIZE];    else if(sel[4])//5        dout = din[4*DATA_SIZE+:DATA_SIZE];    else if(sel[5])//6        dout = din[5*DATA_SIZE+:DATA_SIZE];    else if(sel[6])//7        dout = din[6*DATA_SIZE+:DATA_SIZE];    else if(sel[7])//8        dout = din[7*DATA_SIZE+:DATA_SIZE];    else//0        dout = 0;en

方式二:casez實現:

always @(*)begincasez(sel)8'b0000_0001:dout=din[0*DATA_SIZE+:DATA_SIZE];8'b0000_001?:dout=din[1*DATA_SIZE+:DATA_SIZE];8'b0000_01??:dout=din[2*DATA_SIZE+:DATA_SIZE];8'b0000_1???:dout=din[3*DATA_SIZE+:DATA_SIZE];8'b0001_????:dout=din[4*DATA_SIZE+:DATA_SIZE];8'b001?_????:dout=din[5*DATA_SIZE+:DATA_SIZE];8'b01??_????:dout=din[6*DATA_SIZE+:DATA_SIZE];8'b1???_????:dout=din[7*DATA_SIZE+:DATA_SIZE];default:dout=0;     endcaseend

方式三:采用與門或門搭建。

比如一個二選一的數據選擇器應該,這樣一個結構:

19f53488-aff0-11ec-aa7f-dac502259ad0.png

一個三選一,帶優先級的電路結構

1a0903a0-aff0-11ec-aa7f-dac502259ad0.png

也就是說,我們可以通過代碼,描述出這樣一個電路結構,通過邏輯復制的語句完成參數化的設計。

具體思路是這樣的,先把地址信號sel 變成只是優先級高的那位為1,其他信號為0。例如,低位高優先級,sel=1100,變換后sel_prio=0100。然后,將sel_prio與上對應的數據,可以看出來只有1的那個數據才會被選通,其他為0

module mux#(    parameter DATA_SIZE = 8,    parameter NUM  = 8)(    input  [NUM*DATA_SIZE-1:0]  din,input[NUM-1:0]sel,output[DATA_SIZE-1:0]dout);
assigndout=mux_prio(din,sel);function[DATA_SIZE-1:0]mux_prio;    input  [NUM*DATA_SIZE-1:0]  din;    input  [NUM-1:0]        sel;        reg [NUM-1:0] dat;    integer i,j;    begin        for(i=0;i            for(j=0;j                dat[j] = din[j*DATA_SIZE+i];            end            mux_prio[i] = mux_prio_bit(dat,sel_prio(sel));        end    endendfunctionfunction [NUM-1:0] sel_prio ;    input [NUM-1:0] sel;    reg temp;    integer i,j;    begin        sel_prio[0] = sel[0];        for(i=1;i            begin                temp = 0;                for(j=0;j                    begin                        temp = temp | sel[j];                    end                sel_prio[i] = sel[i] && !temp;            end        endendfunctionfunctionmux_prio_bit;    input  [NUM-1:0]  din;    input  [NUM-1:0]  sel;    integer i;    begin        mux_prio_bit = din[0]&&sel[0];        for(i=1;i            mux_prio_bit = mux_prio_bit | (din[i]&sel[i]);        endendfunctionendmodule

方式四:基于行為級描述。

在前面的設計中我們是根據數據選擇器的電路結構,用硬件語言描述出了這樣的電路,那么我們能不能只描述其功能,然后讓編譯器幫我們理解呢?

module mux#(    parameter DATA_SIZE = 8,    parameter NUM  = 8)(    input  [NUM*DATA_SIZE-1:0]  din,    input  [NUM-1:0]            sel,        output  [DATA_SIZE-1:0]      dout    );assign dout = mux_prio_a(din,sel);//基于功能,行為級的描述function  [DATA_SIZE-1:0]      mux_prio_a ;    input  [NUM*DATA_SIZE-1:0]  din;    input  [NUM-1:0]        sel;    reg temp;    integer i;    begin        temp = 1;        mux_prio_a = 0;        for(i=0;i            if(temp && sel[i])begin                temp = 0;                mux_prio_a = din[i*DATA_SIZE+:DATA_SIZE];            end        end    endendfunctionendmodule

總結:

1、首先,這里提供了了四種描述參數可配的帶優先級的多路選擇器的描述方法。第一種和第二種是常規的描述方法推薦if-else結構,第三種是根據電路結構使用HDL描述,第四種是使用代碼描述了其功能。

2、第三種方法從功能描述,看起來描述簡單,好理解,不過這樣的描述方式是看綜合軟件的“智能化程度”的,因為FPGA是基于查找表LUT結構的,這樣的描述方式在描述比較簡單的電路功能,綜合器是可以正確理解的。如果比較復雜的電路,不推薦用這樣的描述方式。

3、值得注意的是,FPGA設計最重要的是理解低層的電路結構,實現過程最好是 功能--》電路--》HDL描述該電路,這才是最好的設計。使用類似第三種描述方式最好還是掌握理解底層電路結構,然后看綜合出來的是不是你需要的電路


原文標題:Verilog實現可參數化的帶優先級的數據選擇器

文章出處:【微信公眾號:FPGA自習室】歡迎添加關注!文章轉載請注明出處。

審核編輯:彭菁

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1644

    文章

    21992

    瀏覽量

    615291
  • 數據選擇器
    +關注

    關注

    2

    文章

    116

    瀏覽量

    16599
  • 編譯器
    +關注

    關注

    1

    文章

    1657

    瀏覽量

    49968

原文標題:Verilog實現可參數化的帶優先級的數據選擇器

文章出處:【微信號:FPGA_Study,微信公眾號:FPGA自習室】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    如何設計一個參數數據選擇器

    在FPGA設計中,大部分情況下我們都得使用到數據選擇器。并且為了設計參數,可調,通常情況下我們需要一個參數可調的
    的頭像 發表于 11-20 10:27 ?1470次閱讀
    如何設計一個<b class='flag-5'>參數</b><b class='flag-5'>化</b>的<b class='flag-5'>數據</b><b class='flag-5'>選擇器</b>

    8.5.2數據選擇器的應用(1)#硬聲創作季

    數據選擇器
    學習硬聲知識
    發布于 :2022年12月03日 16:30:13

    8.5.2數據選擇器的應用(2)#硬聲創作季

    數據選擇器
    學習硬聲知識
    發布于 :2022年12月03日 16:31:02

    9.7 數據選擇器數據分配器-視頻(1)#硬聲創作季

    數據選擇器
    學習硬聲知識
    發布于 :2022年12月03日 17:09:32

    9.7 數據選擇器數據分配器-視頻(2)#硬聲創作季

    數據選擇器
    學習硬聲知識
    發布于 :2022年12月03日 17:10:18

    數據選擇器(MUX,Multiplexer)

    數據選擇器(MUX,Multiplexer)1.  數據選擇器的構成2.  數據選擇
    發表于 10-20 09:42

    數據選擇器

    浮塵的天氣,風大到可以吹走人了。空中也有不少小沙子和泥土,只能減少外出了。今天咱們來看看數據選擇器,本來想分享模擬開關的,一時找不全相關知識。還是來看看數據選擇器吧。它是實現
    發表于 05-30 17:38

    一個關于數據選擇器的問題。

    我給4選1數據選擇器的輸入端C3 C2 C1 C0分別輸入 4V 3V 2V 1V的電壓,選擇端給1V和0.1V的電壓,按理說根據數據選擇器
    發表于 12-10 10:52

    譯碼數據選擇器及應用

      譯碼數據選擇器及應用  
    發表于 12-20 23:13 ?84次下載

    數據選擇器

    數據選擇器     一、 實驗目的     1. 掌握MSI組合邏輯電路數據選擇器的實驗分析方法。 &nbs
    發表于 03-28 09:55 ?4095次閱讀

    數據選擇器

    數據選擇器 一、數據選擇器的定義及功能   數據選擇是指經過
    發表于 04-07 10:27 ?2.1w次閱讀
    <b class='flag-5'>數據</b><b class='flag-5'>選擇器</b>

    數據選擇器的定義及功能

    數據選擇器的定義及功能   數據選擇是指經過選擇,把多個通道的數據傳送到唯一的公共
    發表于 04-07 10:29 ?2.3w次閱讀
    <b class='flag-5'>數據</b><b class='flag-5'>選擇器</b>的定義及功能

    jquery選擇器的實現原理(jquery選擇器總結)

    jquery原型里面有一個init初始的方法,將傳入的值進行解析,比如傳入的id還是class還是標簽名。然后通過相應的方法返回數組型對象。既可以通過對象直接調用方法,也可以使用數組的length。jQuery 的選擇器可謂之強大無比,這里簡單地總結一下常用的
    發表于 12-03 10:10 ?2829次閱讀
    jquery<b class='flag-5'>選擇器</b>的實現原理(jquery<b class='flag-5'>選擇器</b>總結)

    什么是選擇器 CSS選擇器有哪些

    什么是選擇器呢?每一條css樣式定義由兩部分組成,形式如下: [code] 選擇器{樣式} [/code] 在{}之前的部分就是“選擇器”。 “選擇器”指明了{}中的“樣式”的作用對象
    的頭像 發表于 07-31 15:31 ?7700次閱讀

    數據選擇器是時序邏輯電路嗎

    數據選擇器(Data Selector)是一種數字電路,用于從多個輸入信號中選擇一個或多個信號,并將所選信號輸出。它是一種組合邏輯電路,而非時序邏輯電路。以下是關于數據
    的頭像 發表于 08-01 14:39 ?1504次閱讀
    主站蜘蛛池模板: 亚洲国内精品自在线影视 | 国产免费午夜 | 天天做天天做天天综合网 | 免费看啪 | 5x视频在线观看 | 人人澡人人人人夜夜爽 | 亚洲人在线 | 丁香在线 | 国内91视频 | 在线视频免费观看 | 网站在线观看视频 | 在线电影你懂得 | 国产欧美一区二区三区观看 | 在线观看国产久青草 | 天天在线天天看成人免费视频 | 人人艹人人插 | h视频免费高清在线观看 | 在线视频免费视频网站 | 成人a毛片在线看免费全部播放 | 国产精品免费看久久久久 | 亚洲人成人网毛片在线播放 | 在线观看视频一区二区三区 | www.四虎在线 | 日日操天天射 | 欧美两性网 | 刺激一区 | 久久99久久99精品免观看 | 亚洲人成网站色7799在线播放 | 美女被免网站在线视频 | 轻点灬大ji巴太粗太大了小说 | 福利片免费一区二区三区 | 国产美女在线观看 | 日韩一级片在线观看 | 亚洲系列中文字幕一区二区 | 色在线网站 | 国产亚洲精品久久久久久午夜 | 久久香蕉国产线看观看精品yw | 日本口工福利漫画无遮挡 | 成 人 免费 黄 色 视频 | 福利视频免费观看 | 四虎最新视频 |