衡阳派盒市场营销有限公司

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

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

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

【教程分享】零基礎(chǔ)學習:基于FPGA的多路選擇器設(shè)計(附代碼)

電子發(fā)燒友論壇 ? 來源:未知 ? 2023-06-07 12:25 ? 次閱讀

大俠好,歡迎來到FPGA技術(shù)江湖。本系列將帶來FPGA的系統(tǒng)性學習,從最基本的數(shù)字電路基礎(chǔ)開始,最詳細操作步驟,最直白的言語描述,手把手的“傻瓜式”講解,讓電子信息通信類專業(yè)學生、初入職場小白及打算進階提升的職業(yè)開發(fā)者都可以有系統(tǒng)性學習的機會。


系統(tǒng)性的掌握技術(shù)開發(fā)以及相關(guān)要求,對個人就業(yè)以及職業(yè)發(fā)展都有著潛在的幫助,希望對大家有所幫助。后續(xù)會陸續(xù)更新 Xilinx 的 Vivado、ISE 及相關(guān)操作軟件的開發(fā)的相關(guān)內(nèi)容,學習FPGA設(shè)計方法及設(shè)計思想的同時,實操結(jié)合各類操作軟件,會讓你在技術(shù)學習道路上無比的順暢,告別技術(shù)學習小BUG卡破腦殼,告別目前忽悠性的培訓誘導,真正的去學習去實戰(zhàn)應用,這種快樂試試你就會懂的。話不多說,上貨。



多路選擇器設(shè)計


多路選擇器是數(shù)據(jù)選擇器的別稱。在多路數(shù)據(jù)傳送過程中,能夠根據(jù)需要將其中任意一路選出來的電路,叫做數(shù)據(jù)選擇器,也稱多路選擇器或多路開關(guān)。


二選一多路選擇器


二選一多路選擇器的數(shù)據(jù)輸入有兩個,分別為dataa和datab。為了能夠確定選擇那一路數(shù)據(jù)能夠通過,還需要一個選擇端(sel)。因為輸入只有兩路數(shù)據(jù),選擇端只要能夠表現(xiàn)出兩種狀態(tài)即可,因而選擇端位寬為1即可。


假設(shè)dataa和datab都是位寬為1的數(shù)據(jù),當sel為0時,選擇dataa通過;當sel為1時,選擇datab通過;odata表示通過后的數(shù)據(jù)。



圖1 :二選一多路選擇器模型


根據(jù)上述功能,列出真值表。



圖2 :二選一多路選擇器真值表


根據(jù)真值表,化簡得出布爾表達式:

odata = (dataa &(~sel)) | (datab & sel);


verilog中,算術(shù)運算中,“&”表示算術(shù)(按位)與,“|”表示算術(shù)(按位)或,“~”表示算術(shù)(按位)取反。


在數(shù)字電路基礎(chǔ)中,根據(jù)表達式,就可以得到電路圖。


現(xiàn)在我們要在FPGA中實現(xiàn),二選一多路選擇命名為“mux2_1”,不要命名為mux21,mux21是quartus中默認器件庫中的名字,命名相同會出現(xiàn)錯誤。


建立工程后,輸入如下設(shè)計代碼:(mux2_1代碼)




圖4 :mux2_1的RTL視圖


設(shè)計完成后,輸入如下testbench代碼:(mux2_1_tb代碼)



在verilog中,“//”表示本行被注釋,綜合器綜合時,自動略過。


在testbench中,連接線的名字可以隨意定義,建議和端口相同。


設(shè)置好testbench后,運行RTL 仿真



圖6 :RTL仿真波形


對比波形和真值表,設(shè)計正確。


四選一多路選擇器


四選一多路選擇器的數(shù)據(jù)輸入有四個,分別為dataa、datab、datac和datad。為了能夠確定選擇那一路數(shù)據(jù)能夠通過,還需要一個選擇端(sel)。因為輸入四路數(shù)據(jù),選擇端要求能夠表現(xiàn)出四種狀態(tài),因而選擇端位寬為2。


假設(shè)dataa、 datab、datac和datad都是位寬為8的數(shù)據(jù),當sel為00時,選擇dataa通過;當sel為01時,選擇datab通過;當sel為10時,選擇datac通過;當sel為11時,選擇datad通過;odata表示通過后的數(shù)據(jù)。


圖7 :四選一多路選擇器模型


根據(jù)組合邏輯設(shè)計規(guī)則,我們將所有的情況全部列出,得出真值表,進而得到布爾表達式。但是現(xiàn)在輸入的組合排列太多了(2的34次冪),不能夠直接得出真值表。


此時的設(shè)計有兩種方法。


第一種方法,根據(jù)功能拆分邏輯。將輸入為8的四選一多路選擇器,拆分為8個位寬為1的四選一多路選擇器,首先列出位寬為1真值表,得出位寬為1的四選一多路選擇器。然后并接八個即可。



圖8 :8個位寬1多路選擇器構(gòu)成位寬8的多路選擇器


這種設(shè)計方法,不在提供設(shè)計源碼,讀者可以自行討論設(shè)計。


第二種方法,根據(jù)verilog的設(shè)計規(guī)則,可以直接描述邏輯功能,而不用描述門電路。這種設(shè)計規(guī)則有利于將設(shè)計做的比較大。


位寬為8的四選一多路選擇器命名為“mux4_1”。


建立工程后,輸入設(shè)計代碼如下:(mux4_1代碼)



always 語句用來表示組合邏輯時,即可以采用門電路的描述方法,也可以采用功能性的描述語句。


“always @()”中()是信號敏感列表。中間可以寫入本模塊的所有的敏感信號,“*”可以表示所有的敏感信號。建議利用always語句描述組合邏輯時,用“*”表示所有信號。用“*”時,“()”可以省略。即:always@(*) 等效 always@*。



在case語句中,首先會判斷變量和那個分支相同,并且執(zhí)行對應的表達式。當和所有的分支都不相同時,執(zhí)行default后的表達式。


verilog規(guī)定,在always語句中被賦值的變量,應該定義為“reg”類型。



圖11 :mux4_1的RTL視圖


設(shè)計完成后,輸入testbench代碼。mux4_1_tb 代碼如下:



由于本次輸入的的組合太多,不能全覆蓋測試。故采用隨機數(shù)來進行測試。


$random是一個系統(tǒng)函數(shù),調(diào)用時,可以返回一個隨機值。注意:這個系統(tǒng)函數(shù)只能出現(xiàn)testbench中,在設(shè)計中出現(xiàn)是不可綜合的。


“$random函數(shù)調(diào)用時返回一個32位的隨機數(shù),它是一個帶符號的整形數(shù)...”。例:

reg[23:0] rand;

rand=$random % 60; //產(chǎn)生一個在 -59—59范圍的隨機數(shù)


產(chǎn)生0~59之間的隨機數(shù),例:

reg[23:0] rand;

rand={$random} % 60; //通過{}產(chǎn)生0—59范圍的隨機數(shù)


產(chǎn)生在min, max之間隨機數(shù),例:

reg[23:0] rand;

rand = min+{$random}%(max-min+1);


在testbench中,需要按照一定順序給輸入線賦值。在mux4_1_tb中,我們可以通過延遲賦值,然后再次延遲賦值,來完成賦值。因為賦值時采用隨機數(shù),所以每次編寫的語句是相同的。verilog中提供了repeat語句,用來減少人工輸入。



圖13 :兩種等效的賦值方式


輸入testbench后,進行綜合分析。


設(shè)置testbench,運行RTL仿真。



圖14:RTL仿真圖


經(jīng)過分析,符合四選一多路選擇器的設(shè)計。





聲明本文由電子發(fā)燒友社區(qū)發(fā)布,轉(zhuǎn)載請注明以上來源。如需社區(qū)合作及入群交流,請?zhí)砑游⑿臙EFans0806,或者發(fā)郵箱liuyong@huaqiu.com。


更多熱點文章閱讀

  • 基于Cortex-M3內(nèi)核的32位微控制器STM32項目實戰(zhàn)分享!

  • 基于32位RISC-V設(shè)計的互聯(lián)型微控制器,沁恒微CH32V307開發(fā)樣例

  • RK3568!四核64位ARMv8.2A架構(gòu),匯聚編譯源碼及實戰(zhàn)樣例

  • 尺寸僅有21mm*51mm,板邊采用郵票孔設(shè)計,合宙 Air105 核心板開發(fā)總結(jié)

  • 嵌入式Linux開發(fā)秘籍!工程師大佬親歷分享項目樣例


原文標題:【教程分享】零基礎(chǔ)學習:基于FPGA的多路選擇器設(shè)計(附代碼)

文章出處:【微信公眾號:電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

原文標題:【教程分享】零基礎(chǔ)學習:基于FPGA的多路選擇器設(shè)計(附代碼)

文章出處:【微信號:gh_9b9470648b3c,微信公眾號:電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Vivado Tcl零基礎(chǔ)入門與案例實戰(zhàn)【高亞軍編著】

    Vivado Tcl零基礎(chǔ)入門與案例實戰(zhàn)-高亞軍編寫
    發(fā)表于 01-14 11:13

    TMS320C6000 DSP中斷選擇器參考指南

    電子發(fā)燒友網(wǎng)站提供《TMS320C6000 DSP中斷選擇器參考指南.pdf》資料免費下載
    發(fā)表于 12-24 17:11 ?0次下載
    TMS320C6000 DSP中斷<b class='flag-5'>選擇器</b>參考指南

    零基礎(chǔ)入門PCB工程師

    各位前輩大家好,零基礎(chǔ)入門PCB工程師,有什么學習資料推薦嗎?
    發(fā)表于 11-27 16:54

    零基礎(chǔ)嵌入式開發(fā)學習路線

    “嵌入式開發(fā)”沒有接觸過的同學可能會不明覺厲,但是只要你了解了,感興趣并且有一個正確的學習路線的話,零基礎(chǔ)也能入門。給大家介紹一個簡單易懂的學習路線,讓你能夠從開始
    發(fā)表于 10-25 15:55

    為MCU擴展選擇正確的多路復用器

    電子發(fā)燒友網(wǎng)站提供《為MCU擴展選擇正確的多路復用器.pdf》資料免費下載
    發(fā)表于 09-18 11:52 ?0次下載
    為MCU擴展<b class='flag-5'>選擇</b>正確的<b class='flag-5'>多路</b>復用器

    請問模擬開關(guān)跟多路復用器有什么區(qū)別?

    我想請問,模擬開關(guān)跟多路復用器有什么區(qū)別。比如單刀雙擲開關(guān),是不是就是2選1的多路選擇器,只是模擬開關(guān)是1:2,AMUX是2:1?我理解的區(qū)別是模擬開關(guān)的狀態(tài)要么通道A導通,要么通道B導通,不能同時導通,然而
    發(fā)表于 08-12 08:16

    數(shù)據(jù)選擇器是時序邏輯電路嗎

    選擇器的基本概念 數(shù)據(jù)選擇器,也稱為多路選擇器(Multiplexer,簡稱Mux),是一種常見的數(shù)字電路組件,其基本功能是從多個輸入信號中選擇
    的頭像 發(fā)表于 08-01 14:39 ?1021次閱讀

    數(shù)據(jù)選擇器是組合邏輯電路嗎

    數(shù)據(jù)選擇器(Data Selector)是一種常見的組合邏輯電路,用于根據(jù)輸入的選擇信號,從多個輸入信號中選擇一個輸出。在數(shù)字電路設(shè)計中,數(shù)據(jù)選擇器廣泛應用于
    的頭像 發(fā)表于 08-01 14:28 ?677次閱讀

    基于FPGA的“俄羅斯方塊”設(shè)計(代碼

    今天給各位大俠帶來基于FPGA的“俄羅斯方塊”設(shè)計,設(shè)計思路以及代碼參考文檔。本篇主要在FPGA上實現(xiàn)了一個經(jīng)典小游戲“俄羅斯方塊”。本項目基本解決方案是,使用Xilinx Zynq系列開發(fā)板
    發(fā)表于 07-14 08:31

    FPGA基礎(chǔ)知識學習

    和布局布線 :綜合是將硬件描述語言代碼轉(zhuǎn)換為邏輯網(wǎng)表的過程,而布局布線則是將邏輯網(wǎng)表映射到FPGA的物理資源上,包括邏輯單元(Look-Up Tables, LUT)、寄存、連線等。 靜態(tài)時序分析
    發(fā)表于 04-29 23:26

    邏輯器件多路轉(zhuǎn)換是什么?

    的智慧調(diào)度師。本文將深入探討多路轉(zhuǎn)換的工作原理、應用場景和未來發(fā)展,帶您一起揭開這個邏輯器件的奧秘。 一、工作原理 多路轉(zhuǎn)換通常由多個數(shù)據(jù)輸入端、一個
    的頭像 發(fā)表于 04-28 18:01 ?1740次閱讀

    具有N通道功率MOSFET選擇器的1-4節(jié)鋰離子電池SMBus充電控制bq24735數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《具有N通道功率MOSFET選擇器的1-4節(jié)鋰離子電池SMBus充電控制bq24735數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 04-01 10:58 ?0次下載
    具有N通道功率MOSFET<b class='flag-5'>選擇器</b>的1-4節(jié)鋰離子電池SMBus充電控制<b class='flag-5'>器</b>bq24735數(shù)據(jù)表

    FPGA零基礎(chǔ)學習系列精選:半導體存儲和可編程邏輯器件簡介

    大俠好,歡迎來到FPGA技術(shù)江湖。本系列將帶來FPGA的系統(tǒng)性學習,從最基本的數(shù)字電路基礎(chǔ)開始,最詳細操作步驟,最直白的言語描述,手把手的“傻瓜式”講解,讓電子、信息、通信類專業(yè)學生、初入職場小白
    發(fā)表于 03-28 17:41

    fpga學習需要具備哪些課程

    FPGA(Field Programmable Gate Array)學習需要具備一系列的課程知識和實踐技能
    的頭像 發(fā)表于 03-14 15:51 ?1306次閱讀

    DA1453x閃存選擇器指南應用說明

    電子發(fā)燒友網(wǎng)站提供《DA1453x閃存選擇器指南應用說明.pdf》資料免費下載
    發(fā)表于 02-21 09:40 ?0次下載
    DA1453x閃存<b class='flag-5'>選擇器</b>指南應用說明
    百家乐真钱路怎么看| 大新县| 闲和庄百家乐官网赌场娱乐网规则| 百家乐tt娱乐场开户注册| 皇冠网百家乐官网赢钱| 赌百家乐澳门| 百家乐官网怎么玩了| 百家乐娱乐网备用网址| 百家乐官网号论坛博彩正网| 实战百家乐十大取胜原因百分百战胜百家乐不买币不吹牛只你能做到按我说的.百家乐基本规则 | 百家乐筹码多少钱| 承德县| 真人百家乐体验金| 真人百家乐官网蓝盾赌场娱乐网规则 | 太子百家乐官网的玩法技巧和规则 | 六合彩报码聊天室| 百家乐的关键技巧| 皇冠网现金网| 玩百家乐澳门368娱乐城| 澳门百家乐官网赢钱秘诀| 免费百家乐统计| 梦幻城百家乐官网的玩法技巧和规则| 88娱乐城开户| 菲律宾百家乐太阳城| 大发888娱乐城下载电脑怎么上乐讯新足球今日比分 | 大发888怎么玩| 八卦24山叫什么意思是什么| 利高百家乐官网游戏| 百家乐网址官网| 金龍百家乐官网的玩法技巧和规则 | 利博国际娱乐| 百家乐娱乐平台官网网| 百家乐官网稳赢技法| 德州扑克起手牌概率| 百家乐平台开户哪里优惠多 | 百家乐麻将筹码币镭射贴膜| 锦屏县| 三公百家乐在线哪里可以| 免费百家乐官网倍投工具| 乐九百家乐官网娱乐城| 大发888下载df888|