FPGA學習篇——Verilog學習MUX的實現

PS目前手上仍然沒有板子,按照野火視頻的講解,目前我們只能做到前面六步(其實第一步設計規劃也是需要看板子的硬件的,但是現在沒有板子就完全與野火傳授的板子一致來看)

首先我們以最簡單的2路選擇器MUX2_1為例。

1 設計規劃及波形繪制

設計規劃:MUX的原理是根據sel的值選擇對應輸入連到輸出。

對應的真值表及波形圖繪制如下:

2 代碼編寫

rtl文件:(這里用always進行功能描述,故輸入必須是reg型)

module MUX2_1
(input   in1,in2,sel,output  reg out);always@(*)if(sel == 1'b0)out = in1;elseout = in2;endmodule

?3 邏輯仿真及波形驗證

仿真文件編寫如下:

`timescale 1ns/1nsmodule tb_MUX2_1();reg tb_in1,tb_in2,tb_sel;
wire tb_out;initial begintb_in1 <= 1'b0;tb_in2 <= 1'b0;tb_sel <= 1'b0;        endalways #10 tb_in1 <= {$random} % 2;
always #10 tb_in2 <= {$random} % 2;
always #10 tb_sel <= {$random} % 2;MUX2_1 MUX2_1_inst
(.in1     (tb_in1),.in2     (tb_in2),.sel     (tb_sel),.out     (tb_out)
); endmodule

得到的仿真波形圖如下(注意:1中畫出的波形圖是自己隨意畫的一個波形,而這里仿真文件是隨機生成Sel,in1和in2的,所以這三個與1中畫的輸入就不同,輸出也自然不同,但是依然可以看到,輸出根據sel選擇對應的輸入,仿真通過。)

4? 四選一,八選一...

類似上述2選一選擇器的設計思路,需要更改的點主要是:

sel的位數根據多少輸入來確定:比如四選一有4個輸入,需要兩位sel(00,01,10,11);八選一有8個輸入,需要三位sel(000,001,010,011,100,101,110,111)即

n選一需要x位sel ,滿足2^x = n

4.1 代碼編寫

當輸入比較多時,用if...else語句可能比較麻煩,可以使用case語句,比較清晰明了。

module MUX4_1
(input       in1,input       in2,input       in3,input       in4,input       [1:0] sel,output  reg out);always@(*)begincase(sel)2'b00: out = in1;2'b01: out = in2;2'b10: out = in3;2'b11: out = in4;default out = 1'bx;endcase
endendmodule

4.2 邏輯仿真及波形驗證

注意,這里輸入in1~in4都是一位的,生成隨機數對2取模(得0,1),而sel是兩位的,要求有00,01,10,11四種情況,則不能再對2取模,而是對4取模。

always #10 tb_in1 <= {$random} % 2;
always #10 tb_in2 <= {$random} % 2;
always #10 tb_in3 <= {$random} % 2;
always #10 tb_in4 <= {$random} % 2;
always #10 tb_sel <= {$random} % 4;

`timescale 1ns/1nsmodule tb_MUX4_1();reg       tb_in1;
reg       tb_in2;
reg       tb_in3;
reg       tb_in4;
reg [1:0] tb_sel;wire      tb_out;initial begintb_in1 <= 1'b0;tb_in2 <= 1'b0;tb_in3 <= 1'b0;tb_in4 <= 1'b0;tb_sel <= 2'b00;
endalways #10 tb_in1 <= {$random} % 2;
always #10 tb_in2 <= {$random} % 2;
always #10 tb_in3 <= {$random} % 2;
always #10 tb_in4 <= {$random} % 2;
always #10 tb_sel <= {$random} % 4;MUX4_1 MUX4_1_inst
(.in1(tb_in1),.in2(tb_in2),.in3(tb_in3),.in4(tb_in4),.sel(tb_sel),.out(tb_out)
);endmodule 

(本貼僅是個人經驗,參考嗶哩嗶野火視頻:06-第六講-簡單組合邏輯---多路選擇器(一)_嗶哩嗶哩_bilibili。如有侵權請聯系我~)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/97870.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/97870.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/97870.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OpenStack 學習筆記

OpenStack 1. 什么是 OpenStack 1.1 OpenStack 發展史 2006 年亞馬遜推出 AWS&#xff0c;正式開啟云計算的新紀元 2010 年 7 月美國國家航空航天局&#xff08;NASA&#xff09;與 Rackspace 合作&#xff0c;共同宣布 OpenStack 開放源碼計劃&#xff0c;由此開啟了屬于 Open…

mysql小數取整

1 向下取整 SELECT FLOOR(123.456); -- 結果: 1232 向上取整 SELECT CEIL(123.001); -- 結果: 1243 四舍五入 SELECT ROUND(123.456); -- 結果: 123 SELECT ROUND(123.556); -- 結果: 1244 截斷&#xff08;不四舍五入&#xff0c;直接截斷小數位&#xff09; SELECT …

Day43 PHP(mysql不同注入類型、mysql不同注入點、mysql傳輸不同數據類型 )

一、不同注入類型實際&#xff1a;我們未知sql是哪種類型&#xff0c;只能靠試/使用sql工具原理&#xff1a;閉合程序員寫的sql語句&#xff0c;并且執行我們所需要的sql語句&#xff0c;最后將閉合后多余的 用-- 或者#注釋掉。 總結一下就是先閉合&#xff0c;后注釋。共四種…

Linux應用開發(君正T23):三網智能切換及配網功能

前段時間接手了一個監控項目&#xff0c;其中甲方對于設備的要求有一條就是實現網口eth、WiFi、4G三種手段的聯網方式并且當某一個網絡不好的時候就去切換到下一個能用的網絡&#xff0c;讓監控設備持續不斷的有網絡&#xff0c;保證監控數據的上傳。這個部分的功能就交由我來實…

IvorySQL 4.6:DocumentDB+FerretDB 實現 MongoDB 兼容部署指南

背景 MongoDB 誕生之初&#xff0c;便以出色的易用性與詳盡的驅動程序文檔脫穎而出&#xff0c;堪稱對傳統關系型數據庫的一次重要革新&#xff0c;也正因如此&#xff0c;它迅速成為開發者社區的熱門之選。 然而&#xff0c;隨著其許可模式從開源轉向 SSPL 許可證&#xff0…

論文閱讀:arixv 2025 One Token to Fool LLM-as-a-Judge

總目錄 大模型相關研究&#xff1a;https://blog.csdn.net/WhiffeYF/article/details/142132328 https://arxiv.org/pdf/2507.08794 https://www.doubao.com/chat/20698287584991234 速覽 這篇文檔主要講了一個關于“大語言模型當裁判”的重要發現——很多我們以為靠譜的AI裁…

webrtc弱網-AlrDetector類源碼分析與算法原理

AlrDetector&#xff08;應用受限區域檢測器&#xff09;是WebRTC中用于檢測發送端是否處于應用層限速狀態的核心組件。它通過維護一個基于時間間隔的預算系統&#xff0c;監控實際發送數據量與網絡容量之間的關系。當發送速率持續低于網絡容量的設定比例&#xff08;如65%&…

ABP + Verify(快照) 驅動的 PDF/Excel 導出回歸

ABP + Verify(快照) 驅動的 PDF/Excel 導出回歸 ?? ?? 目錄 ABP + Verify(快照) 驅動的 PDF/Excel 導出回歸 ?? 0) TL;DR ? 1) 背景與目標 ?? 2) 架構與職責(解耦渲染器) ?? 3) “確定性”前置條件(去偽差異) ?? 4) PDF 回歸策略(以 QuestPDF 為例) ?? 4.…

SIFT特征匹配實戰:KNN算法實現指紋認證

這個利用了前面學到的SIFT特征檢測來實現的&#xff0c;然后這里主要就是引入了一個新的匹配器。這里匹配是用KNN算法進行匹配的。下面來看下細節。介紹函數由于要頻繁展示&#xff0c;所以這里定義了一個函數。def cv_show(name, img):cv2.imshow(name, img)cv2.waitKey(0)導入…

網絡安全滲透測試第一步信息收集

信息收集是滲透測試中最基礎且關鍵的一步&#xff0c;它直接影響后續漏洞發現和利用的成功率。本文將系統介紹信息收集的常用方法、工具和技巧&#xff0c;幫助你在實戰中高效定位目標弱點。 一、搜索引擎利用 1. Google Hacking 通過Google搜索語法快速定位敏感信息、后臺地…

C++——類和對象1

1.類的定義1.1 類定義格式class為定義類的關鍵字&#xff0c;Stack為類的名字&#xff0c;{ }中的內容是類的主題為了&#xff0c;注意類定義結束時后面的分號不能省略。類體中的內容稱為類的成員&#xff1a;類中的變量稱為類的屬性或成員變量&#xff1b;類中的函數稱為類的方…

動手學Agent:Agent設計模式——構建有效Agent的7種模型

Agent本身的定義也不是絕對的&#xff0c;從LLM到最高等級的Agent&#xff0c;中間是有大量灰度地帶的&#xff0c;在Anthropic看來&#xff0c;Agent可以以多種方式定義&#xff0c;有些人將完全自主系統定義為Agent&#xff0c;而另一些團隊則將預定義的工作流程定義為Agent。…

Windows 下 .venv 激活腳本深度定制:同時注入 PyTorch 調試日志與國內網絡加速通道——從“能跑”到“好調”的完整工程化方案

Windows 下 .venv 激活腳本深度定制&#xff1a;同時注入 PyTorch 調試日志與國內網絡加速通道 ——從“能跑”到“好調”的完整工程化方案 一、為什么非得改激活腳本&#xff1f; 重復勞動最耗時 每次打開終端都要敲四五行 set/export&#xff0c;人腦就是不可靠的剪貼板。 環…

[BX]和loop指令,debug和masm匯編編譯器對指令的不同處理,循環,大小寄存器的包含關系,操作數據長度與寄存器的關系,段前綴

[bx]是什么[bx]這個表達方式和[0]很像&#xff0c;他們倆的功能也很像。之前就提到了&#xff0c;[0]表示一個內存單元&#xff0c;他的偏移地址是0。從這邊我們可以引出內存單元的定義&#xff1a;要有內存單元的地址&#xff0c;要有內存單元的長度&#xff08;類型&#xff…

域格YM310 X09移芯CAT1模組HTTPS連接服務器

HTTPS連接服務器 本文檔介紹了HTTPS連接服務器的大致流程&#xff0c;測試服務器為httpbin.org。 HTTPS連接服務器流程 創建證書文件 創建一個文件 ATFSCREATE<filename>參數&#xff1a;<filename> 文件名 寫入CA證書 ATFSWRITE<filename>,<mode&…

【ManiSkill】常見envs學習筆記

1. StackCube-v1 用于模擬機器人在桌面場景中將紅色立方體&#xff08;cubeA&#xff09;堆疊到綠色立方體&#xff08;cubeB&#xff09;上的操作。該任務強調精確抓取、放置和穩定性控制。成功條件包括紅色立方體穩定堆疊在綠色立方體上且不被機器人抓取。 參數 (Arguments…

Java 網絡編程全解析

前言&#xff1a;網絡編程的意義與價值 前言&#xff1a;網絡編程的意義與價值 在當今互聯網時代&#xff0c;網絡編程是軟件開發的核心技能之一。無論是桌面應用、移動應用還是企業級系統&#xff0c;幾乎都需要與網絡交互。Java 作為一門跨平臺的編程語言&#xff0c;提供了完…

HarmonyOS應用拉起系列(三):如何直接拉起騰訊/百度/高德地圖進行導航

在鴻蒙應用開發中&#xff0c;經常需要跳轉第三方地圖應用&#xff08;如 騰訊地圖、百度地圖、高德地圖&#xff09;進行導航。無論是出行類 App、物流類 App&#xff0c;還是線下活動類應用&#xff0c;都存在“跳轉地圖導航”的實際需求。寫完HarmonyOS應用拉起系列一和二后…

PCGrad解決多任務沖突

論文解讀&#xff1a;"Gradient Surgery for Multi-Task Learning" 1. 論文標題直譯 Gradient Surgery: 梯度手術for Multi-Task Learning: 應用于多任務學習 合在一起就是&#xff1a;為多任務學習量身定制的梯度手術。這個名字非常形象地概括了它的核心思想。 …

Nvidia顯卡架構解析與cuda應用生態淺析

文章目錄 0. Nvidia顯卡簡介 一、主要顯卡系列 二、主要GPU架構與代表產品 1.main 1.1 CUDA 13.0 的重大變化 1.2 V100 的硬件短板已顯現 1.3 這意味著什么? 1.4 寫在后面 彩蛋:V100 0. Nvidia顯卡簡介 一、主要顯卡系列 GeForce 系列(消費級) 用途:游戲、創作、日常圖形…