91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>VHDL仲裁器開源分享

VHDL仲裁器開源分享

2023-06-13 | zip | 0.00 MB | 次下載 | 免費(fèi)

資料介紹

描述

什么是仲裁員?

仲裁器是硬件設(shè)計(jì)中非常常用的塊。

我想我可以在家里找到仲裁者的最好例子。當(dāng)我的兩個(gè)孩子十幾歲時(shí),我只有一輛車。在周五和周六晚上,通常會(huì)因?yàn)檎l(shuí)可以使用汽車而發(fā)生沖突。通常,由我來(lái)決定(仲裁者)誰(shuí)得到了這輛車。這不是一件容易的事。(我仍然只有一輛車,正好我的孩子都不是十幾歲了,贊美主,他們有自己的車)。

硬件板沒(méi)有什么不同。至少在兩種情況下,多個(gè)用戶“需要”共享(且有價(jià)值且昂貴)的資源:

  • 公共內(nèi)存:處理器FPGA 之間共享快速內(nèi)存(即 DDR)的電路板是很常見的。顯然,記憶不能同時(shí)回答兩個(gè)高手。處理器和 FPGA 向仲裁器請(qǐng)求訪問(wèn)內(nèi)存的權(quán)限。即使它以非常高的速度同時(shí)完成,對(duì)于我們的感知,實(shí)際上,F(xiàn)PGA 和處理器必須輪流擁有內(nèi)存。注意:這只是一個(gè)簡(jiǎn)單的示例,因?yàn)檫€有許多其他應(yīng)用程序甚至超過(guò)兩個(gè)“智能”設(shè)備(處理器、DSPGPU、FPGA、ASIC)輪流訪問(wèn)公共內(nèi)存。
  • 公共總線:很多時(shí)候多個(gè)主機(jī)(和從機(jī))通過(guò)公共總線進(jìn)行通信電氣角度來(lái)說(shuō),總線非常簡(jiǎn)單。它只不過(guò)是一組銅連接或電線(有時(shí)帶有總線驅(qū)動(dòng)器)。但是總線所有權(quán)很重要,因?yàn)閮蓚€(gè)主機(jī)不可能同時(shí)擁有總線(多主機(jī)總線的示例:I2C、PCI)。如果兩個(gè)主機(jī)試圖同時(shí)“交談”,就會(huì)發(fā)生沖突,總線上的數(shù)據(jù)就會(huì)被破壞。

仲裁者是硬件的一部分,它決定誰(shuí)可以在任何給定時(shí)間使用公共的、有價(jià)值的資源。然而,與足球仲裁器不同的是,VHDL 仲裁器永遠(yuǎn)不會(huì)將其中一個(gè)設(shè)備從“游戲”中移除(好吧......幾乎永遠(yuǎn)不會(huì)。在某些情況下,硬件仲裁器會(huì)決定一個(gè)設(shè)備表現(xiàn)不佳并決定將其從“游戲”中移除一個(gè)例子是可插拔卡訪問(wèn)公共總線,可以在關(guān)鍵時(shí)刻拔掉,如果仲裁器沒(méi)有識(shí)別出故障,總線可能會(huì)卡在 - 現(xiàn)在丟失的 - 設(shè)備上)。

仲裁器從其客戶端接收兩種類型的信號(hào)

  • 請(qǐng)求:由想要擁有公共資源的每個(gè)設(shè)備聲明。可以同時(shí)斷言許多請(qǐng)求信號(hào),就像許多設(shè)備請(qǐng)求擁有公共資源的許可一樣。另一方面,可以只有一個(gè),甚至沒(méi)有斷言的請(qǐng)求信號(hào)。后者是在特定時(shí)刻沒(méi)有人需要共享資源的情況。
  • Grant:由仲裁器斷言,每個(gè)master有一個(gè)grant信號(hào)。通常,在任何給定時(shí)間都只會(huì)斷言一個(gè)授權(quán)信號(hào)。

第一次實(shí)現(xiàn) - 固定大小,固定優(yōu)先級(jí)

我們將分析的第一個(gè)仲裁器具有三個(gè)請(qǐng)求輸入和三個(gè)授權(quán)輸出。它也有一個(gè)固定的主人優(yōu)先權(quán)。master 編號(hào)越低,其優(yōu)先級(jí)越高。該塊也有信號(hào)。總線仲裁僅在其處于非活動(dòng)狀態(tài)時(shí)進(jìn)行。如果總線已經(jīng)被授權(quán)給代理,即使更高優(yōu)先級(jí)的主機(jī)請(qǐng)求總線,當(dāng)前事務(wù)也必須在仲裁器將總線授權(quán)給另一個(gè)主機(jī)之前完成。

生成授權(quán)信號(hào)的邏輯(在進(jìn)程arbiter_pr上)非常簡(jiǎn)單。如果第一個(gè)主控(主控 0)斷言請(qǐng)求,則它被授予授權(quán)。只有當(dāng)主控 1 請(qǐng)求總線而主控 0 不請(qǐng)求總線時(shí),它才會(huì)獲得授權(quán)。只有當(dāng)主控 2 請(qǐng)求總線并且主控 0 和主控 1 都沒(méi)有請(qǐng)求總線時(shí),它才會(huì)被授予授權(quán)。

gnt信號(hào)只有在總線不忙時(shí)才會(huì)改變。進(jìn)程busy_pr和相關(guān)邏輯檢測(cè)信號(hào)的下降沿在 busy 變?yōu)榈碗娖胶螅惺跈?quán)信號(hào)都被取消斷言一個(gè)時(shí)鐘,然后選擇下一個(gè)總線主機(jī)的邏輯被激活。

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity arbiter is
  port (
    clk  : in  std_logic;
    rst  : in  std_logic;

    -- inputs
    req  : in  std_logic_vector(2 downto 0);
    busy : in  std_logic;

    -- outputs
    gnt  : out std_logic_vector(2 downto 0)
  );
end arbiter;

architecture rtl of arbiter is
  signal busy_d : std_logic := '0';
  signal busy_fe : std_logic;

begin
  busy_pr : process (clk)
  begin
    if (rising_edge(clk)) then
      busy_d <= busy;
    end if;
  end process busy_pr;

  -- Falling edge of busy signal
  busy_fe <= '1' when busy = '0' and busy_d = '1' else '0';

  arbiter_pr : process (clk, rst)
  begin
    if (rst = '1') then
      gnt <= (others => '0');
    elsif (rising_edge(clk)) then
      if (busy_fe = '1') then
        gnt <= (others => '0');
      elsif (busy = '0') then
        gnt(0) <= req(0);
        gnt(1) <= req(1) and not req(0);
        gnt(2) <= req(2) and not (req(0) or req(1));
      end if;
    end if;
  end process arbiter_pr;

end rtl;

gnt信號(hào)只有在總線不忙時(shí)才會(huì)改變。進(jìn)程busy_pr和相關(guān)邏輯檢測(cè)信號(hào)的下降沿在 busy 變?yōu)榈碗娖胶螅惺跈?quán)信號(hào)都被取消斷言一個(gè)時(shí)鐘,然后選擇下一個(gè)總線主機(jī)的邏輯被激活。

poYBAGSAgZyAXkcHAAEUpXs9m70940.png
?

復(fù)位釋放后,沒(méi)有未完成的請(qǐng)求,因此仲裁器也不會(huì)斷言任何授權(quán)信號(hào)。稍后在模擬中,多個(gè)主機(jī)請(qǐng)求仲裁器的許可(請(qǐng)求已斷言)并根據(jù)其優(yōu)先級(jí)獲得授權(quán)。

在 300 到 400ns 之間,主機(jī)“1”斷言其請(qǐng)求信號(hào)。兩個(gè)時(shí)鐘周期后,來(lái)自主機(jī)“0”的請(qǐng)求被置位。因此,即使 master '0' 稍后到達(dá),當(dāng)仲裁器可以自由分配總線時(shí),它也會(huì)將其分配給 master '0'。

請(qǐng)注意,在gnt信號(hào)之間始終有一個(gè)“休息”時(shí)鐘每個(gè)主機(jī)使用總線四個(gè)時(shí)鐘并放棄總線(這可以在信號(hào)的持續(xù)時(shí)間內(nèi)看到)。

稍后,主機(jī)“2”和“0”都請(qǐng)求總線,正如預(yù)期的那樣,總線被授予主機(jī)“0”。

GitHub 上提供了仲裁器“簡(jiǎn)單實(shí)現(xiàn)”、測(cè)試平臺(tái)和 Modelsim 文件的 VHDL 源代碼

第二種實(shí)現(xiàn)——可變大小,固定優(yōu)先級(jí)

上述仲裁器的邏輯是固定大小的。通過(guò)一些更改,并通過(guò)使用不受約束的端口(查看reqgnt端口),我們可以制作一個(gè)通用仲裁器,其大小可以在實(shí)現(xiàn)時(shí)決定。

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity arbiter_unc is
  port (
    clk  : in  std_logic;
    rst  : in  std_logic;

    -- inputs
    req  : in  std_logic_vector;
    busy : in  std_logic;

    -- outputs
    gnt  : out std_logic_vector
  );
end arbiter_unc;

architecture rtl of arbiter_unc is
  signal busy_d : std_logic;
  signal busy_fe : std_logic;

begin
  busy_pr : process (clk)
  begin
    if (rising_edge(clk)) then
      busy_d <= busy;
    end if;
  end process busy_pr;

  -- Falling edge of busy signal
  busy_fe <= '1' when busy = '0' and busy_d = '1' else '0';

  arbiter_pr : process (clk)
    variable prio_req : std_logic;
  begin
    if (rising_edge(clk)) then
      if (rst = '1') then
        gnt <= (others => '0');
      else  
        if (busy_fe = '1') then
          gnt <= (others => '0');
        elsif (busy = '0') then
          gnt(0) <= req(0);
          for I in 1 to req'left - 1 loop
            prio_req := '0';
            for J in 1 to I loop
              prio_req := prio_req or req(J - 1);
            end loop;
            gnt(I) <= req(I) and not prio_req;
          end loop;
        end if;
      end if;
    end if;  
  end process arbiter_pr;

end rtl;

可變大小仲裁器的 Vivado 仿真,實(shí)例化為 size = 4

pYYBAGSAgZ-AfhrwAAEL2gsZuwA018.png
?

?

poYBAGSAgaGAbTCrAAAtE6BkjVk854.png
兩個(gè)代理的固定優(yōu)先級(jí)仲裁器
?

?

pYYBAGSAgaSANNiBAAAztR_o0HY602.png
三個(gè)代理的固定優(yōu)先級(jí)仲裁器
?

?

poYBAGSAgaiAVMPYAAAx9j2iigw301.png
四個(gè)代理的固定優(yōu)先級(jí)仲裁器
?

?

RTL 表示顯示了處理越來(lái)越多的端口所需的組合復(fù)雜性不斷增加,并且是使用 Quartus Prime 15.1 生成的。請(qǐng)注意,某些塊(如輸出 FF)不是單個(gè)而是堆疊的原始實(shí)例化。如前所述,如果多個(gè)主機(jī)請(qǐng)求總線,則編號(hào)最小的主機(jī)將獲得gnt(回想一下,在任何給定時(shí)間只有一個(gè)主機(jī)應(yīng)接收gnt)。這個(gè)仲裁器有一個(gè)固定的優(yōu)先級(jí)。雖然在某些應(yīng)用程序中可以使用這樣的仲裁器,但最常見的仲裁器類型沒(méi)有固定的優(yōu)先級(jí)。我將在以后的文章中討論更復(fù)雜的仲裁器(循環(huán)法)。

建議練習(xí)

  • 如前所述,這個(gè)簡(jiǎn)單的仲裁器具有固定的優(yōu)先級(jí)。如果多個(gè)主控?cái)嘌运鼈兊恼?qǐng)求信號(hào),則編號(hào)最小的主控器被賦予gnt設(shè)計(jì)一個(gè)固定優(yōu)先級(jí)的主機(jī),其中編號(hào)最高的主機(jī)具有最高優(yōu)先級(jí)。
  • 在這個(gè)仲裁器中,只要一個(gè)主機(jī)請(qǐng)求總線,總線就被授予它。添加超時(shí)邏輯。如果一個(gè)主機(jī)斷言req超過(guò) 10 個(gè)時(shí)鐘周期,如果其他請(qǐng)求未完成,則取消斷言對(duì)該主機(jī)的授權(quán)信號(hào)。
  • 一些仲裁者具有公園功能。Park 的意思是,如果沒(méi)有未完成的請(qǐng)求,gnt信號(hào)將發(fā)送給最后一個(gè)接收到它的主機(jī)。在另一個(gè)版本中,如果沒(méi)有主機(jī)斷言req,則gnt信號(hào)被分配給“默認(rèn)主機(jī)”。為這兩個(gè)選項(xiàng)中的每一個(gè)選項(xiàng)設(shè)計(jì)代碼。

GitHub 上提供了仲裁器“無(wú)約束實(shí)現(xiàn)”、測(cè)試平臺(tái)和 Modelsim 文件的 VHDL 源代碼

誠(chéng)邀您訪問(wèn)我的網(wǎng)站,在那里您可以找到更多VHDL 項(xiàng)目文章以及合法免費(fèi)的書籍和課程


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1DD3118電路圖紙資料
  2. 0.08 MB   |  1次下載  |  免費(fèi)
  3. 2AD庫(kù)封裝庫(kù)安裝教程
  4. 0.49 MB   |  1次下載  |  免費(fèi)
  5. 3PC6206 300mA低功耗低壓差線性穩(wěn)壓器中文資料
  6. 1.12 MB   |  1次下載  |  免費(fèi)
  7. 4網(wǎng)絡(luò)安全從業(yè)者入門指南
  8. 2.91 MB   |  1次下載  |  免費(fèi)
  9. 5DS-CS3A P00-CN-V3
  10. 618.05 KB  |  1次下載  |  免費(fèi)
  11. 6海川SM5701規(guī)格書
  12. 1.48 MB  |  次下載  |  免費(fèi)
  13. 7H20PR5電磁爐IGBT功率管規(guī)格書
  14. 1.68 MB   |  次下載  |  1 積分
  15. 8IP防護(hù)等級(jí)說(shuō)明
  16. 0.08 MB   |  次下載  |  免費(fèi)

本月

  1. 1貼片三極管上的印字與真實(shí)名稱的對(duì)照表詳細(xì)說(shuō)明
  2. 0.50 MB   |  103次下載  |  1 積分
  3. 2涂鴉各WiFi模塊原理圖加PCB封裝
  4. 11.75 MB   |  89次下載  |  1 積分
  5. 3錦銳科技CA51F2 SDK開發(fā)包
  6. 24.06 MB   |  43次下載  |  1 積分
  7. 4錦銳CA51F005 SDK開發(fā)包
  8. 19.47 MB   |  19次下載  |  1 積分
  9. 5PCB的EMC設(shè)計(jì)指南
  10. 2.47 MB   |  16次下載  |  1 積分
  11. 6HC05藍(lán)牙原理圖加PCB
  12. 15.76 MB   |  13次下載  |  1 積分
  13. 7802.11_Wireless_Networks
  14. 4.17 MB   |  12次下載  |  免費(fèi)
  15. 8蘋果iphone 11電路原理圖
  16. 4.98 MB   |  6次下載  |  2 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935127次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191390次下載  |  10 積分
  9. 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  10. 158M  |  183342次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81588次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73815次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65989次下載  |  10 積分
主站蜘蛛池模板: 亚洲综合色丁香婷婷六月图片 | 亚洲一区二区免费 | 日日干狠狠干 | 视频免费播放 | 国产福利午夜 | 亚洲专区一路线二 | 亚欧成人中文字幕一区 | 免费人成网ww44kk44 | 国产精品久久永久免费 | 亚洲国产精品国产自在在线 | 亚洲第一免费视频 | 天天曰天天操 | 有坂深雪在线 | 免费看黄色毛片 | 亚洲成人免费在线 | 久久精品国产亚洲婷婷 | 一级做a爱片在线播放 | 一区二区视频 | 亚洲加勒比在线 | 一级毛片一级毛片一级级毛片 | 波多野结衣在线观看一区二区三区 | 大量真实偷拍情侣视频野战 | 中文字幕成人乱码在线电影 | 欧美精品一区二区三区视频 | www一级毛片| 天天色天天看 | 五月激情六月 | 波多久久夜色精品国产 | 一区在线免费观看 | 夜夜夜夜爽| 色综合色综合色综合 | 亚欧乱色束缚一区二区三区 | 天天撸夜夜操 | 天天操狠狠 | 成年女人毛片 | 免费一看一级毛片 | 亚洲看黄 | 78m-78模成视频在线 | 手机看片国产免费永久 | 免费啪视频在线观看免费的 | 亚洲一区二区黄色 |