數字電子技術基礎(五十)——硬件描述語言簡介

目錄

1 硬件描述語言簡介

1.1 硬件描述語言簡介

1.2 硬件編程語言的發展歷史

1.3 兩種硬件描述的比較

1.4 硬件描述語言的應用場景

1.5 基本程序結構

1.5.1 基本程序結構

1.5.2?基本語句和描述方法

1.5.3 仿真?


1 硬件描述語言簡介

1.1 硬件描述語言簡介

硬件描述語言(Hardware Description Language, HDL)是一種用于描述電子系統(尤其是數字電路)結構、行為和功能的專用編程語言。它允許工程師以文本形式對硬件(如集成電路、FPGA、ASIC等)進行建模、設計和驗證,是電子設計自動化(EDA)流程的核心工具之一。

相較于傳統的編程語言,例如C、Java等,硬件描述更加注重硬件之間的連接關系、時序運行以及并行操作等物理特性。主流的硬件描述語言包括Verilog HDL和VHDL,如下所示:

圖1 主流的硬件描述語言分類

1.2 硬件編程語言的發展歷史

上世紀1970s開始,隨著電路的復雜度的提升,傳統的手工繪圖的方式開始變得低效,學術界開始研究文本硬件描述方法。1972年,美國南加州大學?D. D. Gajski開始研究AHDL(A Hardware Programing Lauguage),這是早期的數字電路描述語言。

目前主流的兩種硬件描述語言均誕生在20世紀80年代,在上世紀80年代時,已經有上百種硬件描述語言,是硬件描述語言快速發展的時代。其中,Verilog HDL是由Gateway Design Automation公司開發的,后來被Cadence公司收購。VHDL是上世界80年代美國國防部資助開發的,作為ADA語言的一部分,用于規范文檔和設計。VHDL和Verilog HDL分別在1985年和1997年成為IEEE標準。

2000年以后,衍生了更加高級的HDL,支持系統級驗證和混合信號建立。

1.3 兩種硬件描述的比較

Verilog HDL和VHDL之間都有相同點:

  • 兩種語言都支持層次化設計。
  • 都支持并發執行,都是基于硬件的特點。
  • 都支持行為級描述和結構級描述。
  • 都支持相同的數據類型,并且都支持組合邏輯和時序邏輯。

除了相同點之外,Veriilog HDL和VHDL之間也存在不同點,對于Verilog HDL語言來說,相對于VHDL,優點為:

  • Verillog語言語法簡潔,易于學習。
  • Verilog語言被廣泛支持。
  • Verilog語言仿真速度快。
  • Verilog語言發展較快。

缺點為:

  • Verilog語言不適合大型復雜設計。
  • Verilog語言的類型系統較弱。
  • Verilog語言對低層次的描述較弱。

對于VHDL語言,其優勢為:

  • VHDL的語法較為嚴謹。
  • VHDL適合用于大型設計。
  • VHDL標準化程度高。
  • VHDL對于低層次描述支持。
  • VHDL可以應用高可靠性系統。

而其劣勢為:

  • VHDL語法復雜。
  • 仿真速度通常很慢。

將上面內容進行總結得:

圖2 Verilog HDL和VHDL之間的比較

1.4 硬件描述語言的應用場景

硬件描述語言的應用十分廣泛,涵蓋范圍如下所示:

圖3 硬件描述語言的應用場景

下面對于各個方面基進行簡答介紹。

(1)人工智能

人工智能是當下火熱的研究內容,HDL可以顯著提升了深度學習中的神經網絡計算,特別是圖像識別中的卷積運算。通過硬件并行性,HDL可以有效地處理大量的圖像數據,減少計算資源的浪費。同時,隨著物聯網(IoT)的發展,邊緣計算是相對熱門的話題,FPGA在邊緣計算中可以提供快速、高效的數據處理能力,減少數據傳輸到云端的需求,降低延遲和帶寬消耗。

(2)智能駕駛

CAN(Controller Area Network)總線是一種廣泛應用于汽車電子、工業控制、航空航天等領域的可靠串行通信協議。CAN協議的數據幀結構包括幀起始位、仲裁字段、控制字段、數據字段、校驗字段等多個部分。VHDL可以通過行為級描述來實現對這些字段的解析和生成,同時利用其并行處理能力來處理多個字段的同步操作。VHDL的高抽象性和模塊化設計使得CAN協議的實現具有很高的靈活性和可擴展性。設計者可以根據不同的應用場景和需求,對CAN協議進行定制和優化。

(3)通信領域

HDL在通信領域同樣也有應用。例如,在基帶信號處理方面,完成各種調制方式,如相移鍵控(PSK)、正交幅度調制(QAM)等。HDL可根據不同的通信標準和需求,靈活實現調制和解調算法,將數字信號轉換為適合在信道中傳輸的模擬信號。在射頻信號處理方面,在發射端將基帶信號上變頻到射頻頻段以便通過天線發射,在接收端,將射頻信號下變頻到基帶頻段進行后續處理。FPGA 可以生成各種頻率的本振信號,并與基帶信號進行混頻,實現頻譜搬移。

(4)集成電路(IC)設計

在 IC 設計的早期階段,設計人員通常使用 HDL 進行行為級描述。這種描述方式側重于對電路功能的抽象表達,而不涉及具體的硬件結構。在 IC 設計過程中,需要對設計的功能進行驗證,確保其符合設計要求。HDL 可以用于搭建測試平臺,生成激勵信號并監測電路的輸出響應。例如,對于一個設計好的存儲器芯片,使用 HDL 編寫測試平臺可以模擬不同的讀寫操作,檢查存儲器的讀寫功能是否正常。

(5)數字信號處理

HDL在數字信號處理有很多應用。例如在濾波器的設計方面,如果想設計一個FIR(有限沖擊響應)濾波器,可以通過HDL代碼在FPGA中實現。HDL代碼可以定義濾波器的系數存儲、乘法累加運算等邏輯,從而實現對輸入信號的濾波處理。在快速傅里葉變化的應用中,FFT是數字信號處理中的重要算法,用于將時域信號轉換為頻域信號。HDL可以在FPGA中實現FFT算法的硬件加速。通過編寫HDL代碼,可以定義蝶形運算單元、數據存儲和調度等邏輯,實現高效的FFT運算。

(6)醫療領域

HDL在醫療領域也有較多的應用,例如在醫療成像領域,在 MRI、CT 等醫學成像設備中,HDL 可用于設計圖像重建算法模塊。通過對采集到的大量原始數據進行快速處理和運算,利用 HDL 實現如反投影算法、迭代重建算法等,能夠在短時間內重建出高質量的人體內部器官圖像,為醫生提供準確的診斷依據。在醫療監護領域,DL 可用于設計生理信號采集與處理模塊。可以對心電、血壓、血氧等多種生理信號進行實時采集、放大、濾波和模數轉換等處理。

(7)航空航天

HDL在高性能、高可靠性和和復雜系統設計方面有很多應用。例如,在航空發動機系統設計中,基于模型的系統工程(MBSE)方法結合HDL工具,可以實現需求驅動的正向設計流程,快速搭建系統模型,并與多學科聯合仿真驗證程序融合。HDL工具通過內置的設計規則集合(包括DO-254等安全關鍵設計規則集),能夠確保設計滿足航空航天行業的嚴格標準。

(8)消費電子

消費電子是普通人接觸較多的領域,HDL在消費電子也有很大的應用。例如,在顯示驅動方面實現屏幕控制和顯示優化,在智能手機、平板電腦、智能手表等各類顯示屏設備中,HDL 可用于設計顯示驅動芯片。它能精確控制屏幕的像素點發光,實現不同分辨率、刷新率和色彩模式的顯示。在音視頻處理方面對于高清視頻的解碼,在智能電視、機頂盒、藍光播放器等設備中,HDL 可用于設計專用的視頻解碼芯片。

1.5 基本程序結構

1.5.1 基本程序結構

和其他編程類似,Verilog HDL也是采用模塊化的結構,以模塊化的形式來描述數字電路系統。模塊(module)是Verilog HDL語言中描述電路的基本單元。模塊的基本語法如下所示:

module<模塊化>(<端口列表>)
<定義>
<模塊條目>
endmodule

??最基本的模塊如下所示:

module module_name (input [width] input1,   // 輸入端口input [width] input2,output [width] output1, // 輸出端口output [width] output2
);// 模塊內部邏輯
endmodule

上面的端口定義兩個輸入端口和兩個輸出端口。

1.5.2?基本語句和描述方法

對于組合邏輯來說,使用assign實現組合邏輯:

assign output = input1 & input2; // 邏輯與操作

組合邏輯是輸出信號僅依賴于當前輸入信號的邏輯。例如,設計一個簡單的2輸入與門:

module and_gate (input wire a,input wire b,output wire y
);assign y = a & b; // 組合邏輯
endmodule

而對于時序邏輯電路來說,使用always塊實現時序邏輯,通常與clock信號結合。如下所示:

always @(posedge clk) beginif (reset) beginreg_out <= 0;end else beginreg_out <= input;end
end

時序邏輯的輸出不僅依賴于當前輸入,還依賴于過去的輸入。例如,設計一個D觸發器:

module d_ff (input wire clk,   // 時鐘信號input wire reset, // 異步復位信號input wire d,     // 數據輸入output reg q      // 數據輸出
);always @(posedge clk or posedge reset) beginif (reset) beginq <= 0; // 異步復位end else beginq <= d; // 數據鎖存endend
endmodule

?生成結構是Verilog中一種強大的功能,允許在編譯時根據參數條件創建或重復模塊實例、寄存器、線網或其他Verilog元素。它主要用于創建可配置和可重用的設計。主要的生產結果包括generate-for循環、generate-if循環、generate-case循環:

例如generate-for循環:

generateif (WIDTH > 4) begin : wide_block// 當WIDTH>8時包含的代碼reg [WIDTH-1:0] wide_reg;endelse begin : narrow_block// 否則包含的代碼reg [7:0] narrow_reg;end
endgenerate

Verilog中一種編譯時循環結構,主要用于在硬件描述中創建重復的電路結構。

1.5.3 仿真?

仿真用于驗證Verilog代碼的功能是否正確。通常使用仿真工具(如ModelSim、Vivado Simulator等)進行仿真。仿真工具會生成波形圖,顯示輸入和輸出信號隨時間的變化。設計人員可以根據波形圖判斷是否設計正確。

因為本系列主要講的是數字電子技術內容,在這里對于Verilog HDL和VHDL不進行更加細致的講解,以后有機會的話可能對于這編程語言進行講解。

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

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

相關文章

SQL系列:常用函數

1、【MySQL】合并字段函數&#xff08;列轉行&#xff09; 它可以將兩個字段中的數據合并到一個字段中。 1&#xff09;CONCAT函數 CONCAT函數可以將多個字段中的數據合并到一個字段中。它的語法格式如下&#xff1a; SELECT CONCAT(字段1,字段2,...字段N) FROM 表名;SELEC…

多線程和線程同步

多線程在項目開發中使用頻率高,使用多線程能夠提高程序的并發性 提高程序的并發性:1.多線程,對系統資源的消耗更小一些 2.多進程 系統的cpu資源有線,cpu時間片被分好后,由系統進行調度,每個線程在執行的時候都需要搶這個cpu的時間片。如果搶到了,就執行,如果沒搶到,…

時序數據預測:TDengine 與機器學習框架的結合(一)

一、引言 在當今數字化時代&#xff0c;時序數據如潮水般涌來&#xff0c;廣泛存在于物聯網、工業監控、金融交易、氣象監測等眾多領域。這些按時間順序記錄的數據蘊含著豐富的信息&#xff0c;對其進行準確預測&#xff0c;能夠為企業和組織的決策提供有力支持&#xff0c;帶…

elementUI中MessageBox.confirm()默認不聚焦問題處理

在項目中使用elementUI的MessageBox.confirm()出現了默認不聚焦的問題&#xff0c;默認確認按鈕是淺色的&#xff0c;需要點擊一下才會變成正常。面對這種問題&#xff0c;創建新組件&#xff0c;實現聚焦。替換默認的MessageBox.confirm() 解決 創建components/MessageBoxCo…

yarn的定義

YARN 即 Yet Another Resource Negotiator&#xff0c;它是 Apache Hadoop 2.x 及后續版本中的集群資源管理系統&#xff0c;也是 Hadoop 生態系統的核心組件之一。 YARN 的誕生是為了解決 Hadoop 1.x 中 MapReduce 框架將資源管理和作業調度任務耦合在一起所帶來的可擴展性差等…

http、https、TLS、證書原理理解,對稱加密到非對稱加密問題,以及對應的大致流程

http 超文本傳輸協議 存在問題&#xff1a; 安全性、隱私性、數據完整性 易被中間人&#xff08;黑客之類的&#xff09;對數據進行劫持、篡改、隱私泄露 引出了 https &#xff08;source&#xff09; http 在網絡模型中的應用層 Application > transport > inter…

深度補全網絡:如CSPN++填補稀疏點云的深度信息

深度補全網絡&#xff1a;CSPN填補稀疏點云的深度信息 深度補全(Depth Completion)是計算機視覺中的一個重要任務&#xff0c;旨在從稀疏的深度測量中恢復密集的深度圖。CSPN(Convolutional Spatial Propagation Network)是這一領域的前沿方法之一。 CSPN概述 CSPN是對原始CSPN…

QT網絡拓撲圖繪制實驗

前言 在網絡通訊中&#xff0c;我qt常用的是TCP或者UDP協議&#xff0c;就比方說TCP吧&#xff0c;一臺服務器有時可能會和多臺客戶端相連接&#xff0c;我之前都是處理單鏈接情況&#xff0c;最近研究圖結構的時候&#xff0c;突然就想到了這個問題。那么如何解決這個問題呢&…

DNS主從同步實驗

dns域名解析原理 實驗步驟1、主dns要完成dns解析&#xff1a;192.168.21.128 [rootlocalhost ~]# yum install bind -y [rootlocalhost ~]# systemctl start named [rootlocalhost ~]# vim /etc/named.conf options { listen-on port 53 { any; }; direct…

知識了解03——怎么解決使用npm包下載慢的問題?

1、為什么使用npm下載包會下載的慢 因為使用npm下載包時&#xff0c;默認使用國外服務器進行下載&#xff0c;此時的網絡傳輸需要經過漫長的海底電纜&#xff0c;因此下載速度會變慢 2、怎么解決&#xff1f;&#xff08;切換鏡像源&#xff09; &#xff08;1&#xff09;方…

在Ubuntu系統中安裝和升級RabbitVCS

在Ubuntu系統中安裝和升級RabbitVCS 目前在ubuntu中使用svn的GUI工具&#xff0c;已經安裝了。想升級一下。 當前遇到的問題是&#xff0c;我想用它看看我當前的代碼對應的版本號&#xff0c;然后再決定是否update。但是&#xff0c;好像我看不出來。根本不如在windows使用To…

cv::dnn::NMSBoxes和nms-free的比較

1. 原理與目標 cv::dnn::NMSBoxes 基于傳統的非極大值抑制&#xff08;NMS&#xff09;算法&#xff0c;通過交并比&#xff08;IoU&#xff09;篩選重疊框&#xff0c;保留置信度最高的框&#xff0c;抑制冗余檢測。支持變體如 Soft-NMS&#xff08;通過降低分數而非直接抑制&…

React-useImperativeHandle (forwardRef)

我們會遇到這樣的場景&#xff1a;某個組件想要暴露一些方法&#xff0c;來供外部組件來調用。例如我們在開發form表單的時候&#xff0c;就需要把設置表單值、重置值、提交等方法暴露給外部使用。會有如下代碼&#xff1a; import { forwardRef } from react;const Form for…

多人五子棋聯機對戰平臺 測試報告

目錄 項目介紹 測試用例設計 部分功能測試示例 自動化測試 測試范圍 排除范圍 自動化測試目錄?編輯 執行全部自動化測試用例 性能說明 總結 性能測試 結果分析 測試總結 項目介紹 該項目基于WebSocket實現實時通信&#xff0c;采用SSM框架構建在線五子棋多人聯機…

JAVAEE(網絡原理—UDP報頭結構)

我們本篇文章要講的是UDP的報頭結構以及注意事項。 下面呢&#xff0c;我先說一下UDP是什么&#xff1f; 1.UDP是什么&#xff1f; UDP是一種網絡協議。網絡協議是計算機網絡中&#xff0c;為了使不同設備之間能夠準確、高效地進行數據交換和通信&#xff0c;而預先制定的一…

STM32學習筆記匯總

所有學習資料均參考b站江科大&#xff0c;和鐵山羊 一.創建工程&#xff08;比較麻煩&#xff0c;而且時間長了就容易忘記&#xff09; 二.點燈大師&#xff08;成功的第一步&#xff09; 三.不同的燒錄器使用&#xff08;Jlink-stlink&#xff09;

【MySQL】SQL語句在MySQL中的執行過程?主要存儲引擎區別?

MySQL SQL語句執行過程詳解 作為面試官&#xff0c;我來詳細剖析一條SQL語句在MySQL中的完整執行過程&#xff0c;這是每個后端開發者都應該掌握的核心知識。 一、連接階段 建立連接 客戶端通過TCP/IP協議與MySQL服務器建立連接(默認3306端口)服務器驗證用戶名、密碼和權限…

【記錄】服務器安裝ffmpeg

前言 因為項目中需要用到 ffmpeg 進行圖像的一些操作,本文記錄下在服務器安裝 ffmpeg 的全過程,還是具有一定挑戰性的。 系統詳情 本文使用的操作系統詳情如下 通過 命令 cat /etc/os-release 獲取 雖然操作系統為 Rocky Linux,但安裝過程是通用的,因為本文記錄的是從源代碼…

Django之modelform使用

Django新增修改數據功能優化 目錄 1.新增數據功能優化 2.修改數據功能優化 在我們做數據優化處理之前, 我們先回顧下傳統的寫法, 是如何實現增加修改的。 我們需要在templates里面新建前端的頁面, 需要有新增還要刪除, 比如說員工數據的新增, 那需要有很多個輸入框, 那html…

HTML5 應用程序緩存:原理、實踐與演進

在 Web 技術的發展歷程中&#xff0c;HTML5 引入的應用程序緩存&#xff08;Application Cache&#xff09;曾是提升 Web 應用離線體驗的重要技術。它允許 Web 應用進行緩存&#xff0c;使用戶在沒有因特網連接時也能訪問應用&#xff0c;為 Web 應用帶來了顯著的優勢。然而&am…