FPGA實踐 ——Verilog基本實驗步驟演示


0x00?回顧:AND/OR/NOT 邏輯的特性

AND:與門可以具有兩個或更多的輸入,并返回一個輸出。當所有輸入值都為 1 時,輸出值為 1。如果輸入值中有任何一個為 0,則輸出值為 0。

OR:或門可以具有兩個或更多的輸入,并返回一個輸出。如果輸入值中至少有一個為 1,則輸出值為 1。如果所有輸入值都為 0,則輸出值為 0。

NOT:非門具有一個輸入和一個輸出。當輸入值為 1 時,輸出值為 0;當輸入值為0時,輸出值為1。

晶體管級邏輯門 AND/OR/NOT 的結構:

0x01?扇出的概念(Fan-out)

扇出?(fan-out) 是一個定義單個邏輯門能夠驅動的數字信號輸入最大量的專業術語。

扇出即輸出可從輸出設備輸入信號的電路的數量。它的英文含義是“分散”。扇出的大小表示一個輸出被多個其他邏輯門的輸入使用。如果刪除太大,電路可能會受損或信號無法正確傳遞,因此需要解決這個問題。可以通過將一個信號分割為兩個部分進行處理或創建緩沖區等方法來減小扇出的影響。

0x02?傳播延遲(Propagation Delay)

傳播延遲 (Propagation Delay) 是指邏輯電路從接收輸入信號到產生輸出結果所需的平均時間。它受邏輯門的數量及其延遲時間的影響,表示如下:

T_{PD}=(T_{PHL}+T_{PLH})\cdot \frac{1}{2}

其中,T_{PD}Propagation Delay)是傳播延遲時間,T_{PHL}(Propagation delay time from High to Low)是輸出響應輸入信號從邏輯 1 變為邏輯 0 所需的時間,T_{PLH}(Propagation delay time from Low to High)是輸出響應輸入信號從邏輯 0 變為邏輯 1 所需的時間。

延遲時間隨著通過門數的增加而增加,因此在設計邏輯電路時必須牢記這一點,以提高效率。

0x03?Verilog 中的 task 和 function

Verilog 中的任務 (task) 和函數 (function) 是用來減少代碼重復的關鍵字,就像 C 語言中的函數一樣。換句話說,在具有大量相同行為的項目中,任務和函數可以用來簡化代碼。任務和函數都可以有局部變量、全局變量、寄存器、時間變量、整數、實數等,但不能有導線。 它們也只包含行為語法,沒有始終和初始語法。具體區別如下:

① task:

  • 可以使用 task 和 endtask 將開始和結束包圍起來進行聲明。
  • 可以包含延遲、時序和事件控制語句。
  • 可以有一個或多個輸入、輸出、input 等參數,也可以沒有任何參數。
  • 內部可以同時調用任務(task)和函數(function)。
  • 如果不使用時間延遲功能,可以進行綜合。
  • 可以在非零仿真時間下執行。
  • 可以通過命令語句調用,但不能在表達式內部使用。

② function:

  • 可以使用 "function" 和 "endfunction" 將開始和結束包圍起來進行聲明。
  • 不能包含延遲、時序和事件控制語句。
  • 至少有一個以上的輸入,并且只有一個返回值。
  • 內部只能調用函數(function)。
  • 可以進行綜合,并用于組合電路建模。
  • 總是在仿真時間為 0 時執行。

0x04?FPGA 的工作原理

描述FPGA的工作原理:使用Vivado和Verilog語言驗證FPGA工作時,可以使用以下程序。

Verilog 編碼(Verilog Coding)

在 Vivado 中編寫 Verilog 設計源代碼和測試平臺代碼來控制門的行為。在這種情況下,變量值中的 0 或 1 可以作為 FPGA 中的 "開關 "來實現。(開關打開 = 1,開關關閉 = 0,等等)。

設備分配(Device assignment)

要操作FPGA,需要為項目分配相應的器件。在 Vivado 中,這可以在 Project Manager > Settings > Project device 菜單中完成,設備應為 xc7a75tfgg484-1 (Artix7)。Artix-7 FPGA 是 FPGA 器件,可為邏輯、信號處理、嵌入式存儲器、LVDS I/O、存儲器接口和收發器提供優化的性能。

引腳分配(Pin assignment)

引腳只是 Verilog 代碼中的輸入和輸出變量。您可以通過 Vivado 的 Project Manager > Add Sources > Add或create constraints > Create File 創建一個 .xdc 文件,并從 FPGA 引腳列表和Verilog 源的端口鏈接您要分配的引腳。舉個例子:

set_property -dict {PACKAGE_PIN G21 IOSTANDARD LVCMOS33} [get_ports a] [get_ports a] [get_ports a] [get_ports a [get_ports a]

綜合/實現(Synthesis/Implement)

在 Vivado 中,可以通過 Synthesis > Run Synthesis、Implementation > Run Implemented > Open Implemented Design 創建綜合設計和布線設計。

器件配置(Device Configuration)

設備配置可以通過 Vivado 中的“編程和調試”>“生成比特流”>“打開硬件管理器”來完成。

FPGA 行為

在 Vivado 中,單擊 Program and debug > Open Hardware Manager > Open Target > Auto Connect,然后在 Project[title] > Project[title]_runs > impl_1 文件夾中添加 debug_nets.ltx 文件。
Program and debug > Program Device > Debug probes file > Select the debug_nets.ltx file added above and specify the Program device(xc7a75t_0) to connect to the external FPGA device。

0x05 具體操作過程

Device assignment:

Device assignment → Device : xc7a75tfgg484

Pin assignment

鏈接你希望在 FPGA pin list 中分配的 Pin 和 Verilog 源端口:

set_property -dict {PACKAGE_PIN G21 IOSTANDARD LVCMOS33} [get_ports a]
set_property -dict {PACKAGE_PIN F15 IOSTANDARD LVCMOS33} [get_ports y]

?

?

Synthesis / Implementation:

Device configuration:

我的板子比較老,是 FPGA Starter Kit Ⅲ:

初始化狀態如下所示:

Open Target →??點擊 auto connect,自動連接:

選擇?Program Device:

🚩 輸出結果演示:

📌 [ 筆者 ]? ?王亦優
📃 [ 更新 ]? ?2022.9.20
? [ 勘誤 ]?? /* 暫無 */
📜 [ 聲明 ]? ?由于作者水平有限,本文有錯誤和不準確之處在所難免,本人也很想知道這些錯誤,懇望讀者批評指正!

📜 參考資料?

Introduction to Logic and Computer Design, Alan Marcovitz, McGrawHill, 2008

Microsoft. MSDN(Microsoft Developer Network)[EB/OL]. []. .

百度百科[EB/OL]. []. https://baike.baidu.com/.

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

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

相關文章

【python】-【】

文章目錄 轉義字符和原字符二進制與字符編碼標識符和保留字變量的定義和使用變量字符串列表for 一、print會輸出①數字②字符串(必須加引號)③含有運算符的表達式(例如 31 其中3,1是操作數,是運算符)&#…

vector的模擬實現

什么是vector vector是一個封裝了動態大小數組的順序容器跟任意其它類型容器一樣,它能夠存放各種類型的對象。 模擬實現 實現前的準備 在實現vector之前,為了和庫里的區分開需要將實現的vector放在一個自定義的命名空間里。而且vector需要實現成模版…

論文閱讀 - Neutral bots probe political bias on social media

論文鏈接:Neutral bots probe political bias on social media | EndNote Click 試圖遏制濫用行為和錯誤信息的社交媒體平臺被指責存在政治偏見。我們部署中立的社交機器人,它們開始關注 Twitter 上的不同新聞源,并跟蹤它們以探究平臺機制與用…

超導熱催生meme,換湯不換藥的投機輪回

文/章魚哥 出品/陀螺財經 幣圈對炒作meme概念的熱情從未消亡過。 隨著一種名為LK-99的物質被發現,圍繞超導的興奮不僅激發了科學界,加密貨幣相關概念也與之沸騰。不出所料,與此前圍繞元宇宙、AI大肆炒作一樣,許多meme代幣已經出現…

關于MySQL中的binlog

介紹 undo log 和 redo log是由Inno DB存儲引擎生成的。 在MySQL服務器架構中,分為三層:連接層、服務層(server層)、執行層(存儲引擎層) bin log 是 binary log的縮寫,即二進制日志。 MySQL…

android開發之Android 自定義滑動解鎖View

自定義滑動解鎖View 需求如下: 近期需要做一個類似屏幕滑動解鎖的功能,右劃開始,左劃暫停。 需求效果圖如下 實現效果展示 自定義view如下 /** Desc 自定義滑動解鎖View Author ZY Mail sunnyfor98gmail.com Date 2021/5/17 11:52 *…

數據結構——線性表

文章目錄 線性表的定義和基本操作順序表線性表的鏈式表示 線性表的定義和基本操作 線性表是具有相同數據類型的(n≥0)個數據元素的有限序列,其中n為表長,當n0時線性表是一個空表。若用L命名線性表,則其中一般表示為:L(a1,a2,a3, …

.NET實現解析字符串表達式

一、引子功能需求 我們創建了一個 School 對象&#xff0c;其中包含了教師列表和學生列表。現在&#xff0c;我們需要計算教師平均年齡和學生平均年齡。 //創建對象 School school new School() {Name "小菜學園",Teachers new List<Teacher>(){new Teach…

CCLINK轉MODBUS-TCP網關cclink通訊接線圖 終端電阻

大家好&#xff0c;今天我們要聊的是生產管理系統中的CCLINK和MODBUS-TCP協議&#xff0c;它們的不同使得數據互通比較困難&#xff0c;但捷米JM-CCLK-TCP網關的出現改變了這一切。 1捷米JM-CCLK-TCP是一款自主研發的CCLINK從站功能的通訊網關&#xff0c;它的主要功能是將各種…

后端開發5.Redis的搭建

使用docker安裝 Redis【redis】(6379) 拉取Redis鏡像 docker pull redis:6.2.6 啟動Redis容器 docker run -di --name=redis -p 6379:6379 redis:6.2.6 啟動Redis容器并設置密碼 docker run -di --name=redis -p 6379:6379 redis:6.2.6 --requirepass "密碼" 測…

D455+VINS-Fusion+surfelmapping 稠密建圖(三)

繼續&#xff0c;由surfelmapping建立的點云生成octomap八叉樹柵格地圖 一、安裝OctomapServer 建圖包 安裝插件 sudo apt-get install ros-melodic-octomap-ros sudo apt-get install ros-melodic-octomap-msgs sudo apt-get install ros-melodic-octomap-server sudo apt-…

cubemx hal stm32 舵機 可減速 任意位置停止 驅動代碼

CubeMX配置 對于 STM32 F407VE 這里的84是來自APB1那路2倍頻得到&#xff1a; 代碼部分 兩個舵機都是180度的 servo.c #include "servo.h" #include "tim.h" #include "stdio.h"__IO uint32_t g_SteerUWT[2] {0}; uint16_t g_SteerDeg[…

React Native Maps的使用

介紹 React Native Maps是一個用于在React Native應用中顯示地圖的庫。它提供了許多功能&#xff0c;如顯示地圖、標記位置、繪制多邊形等。以下是React Native Maps的使用步驟&#xff1a; 使用 首先&#xff0c;你需要在你的React Native項目中安裝React Native Maps庫。可…

青大數據結構【2014】

一、單選 二、簡答 為了解決順序隊列的假溢出問題&#xff0c;提出了循環隊列&#xff0c;即把存儲隊列的表從邏輯上看成一個環 判別隊列空和滿有三種方法&#xff1a; 1&#xff09;采用計數器判別&#xff0c;空時&#xff0c;計數器為0&#xff1b;滿時&#xff0c;計數器…

【設計模式——學習筆記】23種設計模式——中介者模式Mediator(原理講解+應用場景介紹+案例介紹+Java代碼實現)

文章目錄 案例引入案例一普通實現中介者模式 案例二 介紹基礎介紹登場角色尚硅谷 《圖解設計模式》 案例實現案例一&#xff1a;智能家庭類圖實現 案例二&#xff1a;登錄頁面邏輯實現說明類圖實現 總結文章說明 案例引入 案例一 普通實現 在租房過程中&#xff0c;客戶可能…

css 實現 html 元素內文字水平垂直居中的N種方法

上一篇博文寫了div 中元素居中的N種常用方法&#xff0c;那么單個html元素&#xff1a;div&#xff08;塊級元素代表&#xff09;&#xff0c;span&#xff08;行內元素代表&#xff09;中的文字如何水平垂直都居中呢&#xff1f;實現方法如下&#xff1a; 本文例子使用的 html…

WebAPIs 第二天

DOM事件基礎 事件監聽事件類型事件對象 一.事件監聽 ① 概念&#xff1a;就是讓程序檢測是否有事件發生&#xff0c;一旦有事件觸發&#xff0c;就立即調用一個函數做出響應&#xff0c;也成為綁定事件或者注冊事件 ② 語法&#xff1a;元素對象.addEventListener(事件類型&…

機器學習---對數幾率回歸

1. 邏輯回歸 邏輯回歸&#xff08;Logistic Regression&#xff09;的模型是一個非線性模型&#xff0c; sigmoid函數&#xff0c;又稱邏輯回歸函數。但是它本質上又是一個線性回歸模型&#xff0c;因為除去sigmoid映射函 數關系&#xff0c;其他的步驟&#xff0c;算法都是…

從零開始,貪吃蛇小游戲系列專欄完美收官!

&#x1f3ae; 從零開始&#xff0c;貪吃蛇小游戲系列專欄完美收官&#xff01; &#x1f40d; 各位游戲開發探索者們&#xff0c;大家好&#xff01;我是[億元程序員]&#xff0c;一位擁有8年游戲開發經驗的主程。經過一段時間的努力&#xff0c;我很高興地宣布&#xff0c;我…

阿里云預裝LAMP應用導致MySQL不顯示訪問密碼如何解決

&#x1f600;前言 本篇博文是關于阿里云云服務器ECS部署MySQL過程中出現的一下坑&#xff0c;希望能夠幫助到您&#x1f60a; &#x1f3e0;個人主頁&#xff1a;晨犀主頁 &#x1f9d1;個人簡介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以幫助到大家…