Verilog基礎(一):基礎元素

verilog基礎

我先說,看了肯定會忘,但是重要的是這個過程,我們知道了概念,知道了以后在哪里查詢。語法都是術,通用的概念是術。所以如果你有相關的軟件編程經驗,那么其實開啟這個學習之旅,你會感受到熟悉,也會感受到別致。


入門

- 如何開始

歡迎來到二進制的世界,數字邏輯的入門一開始可能有難度,因為你需要學習新的概念,新的硬件描述語言(HDL – Hardware Description Language)例如 verilog,幾個新的仿真軟件和一塊FPGA的板子.但是這能幫你更加深刻的理解計算機的運作原理.

設計電路需要如下幾個步驟:

  1. 編寫HDL(verilog)代碼
  2. 編譯代碼生成電路
  3. 模擬電路并修復錯誤

下面,我們來個簡單的例子,請把one的輸出設為1:

  • Module Declaration
module top_module(output one);
  • Solution
module top_module( output one );assign one = 1;endmodule
- 輸出0

建立一個沒有輸入,輸出為常數0的電路.

本系列題使用verilog-2001 ANSI-style 的端口聲明語法,因為它更容易閱讀并減少了拼寫錯誤.如果愿意,可以使用舊的verilog-1995語法.例如,下面的兩個模塊聲明是可接受的和等效的:

module top_moduel(zero);output zero;//verilog-1995
endmodulemodule top_module(output zero);
//verilog-2001
endmodule
  • Module Declaration
module top_module(output zero
);
  • Solution
module top_module(output zero
);// Module body starts after semicolonassign zero=0;
endmodule

Verilog 語言

基礎元素

- wire類型

創建一個具有一個輸入和一個輸出的模塊,其行為想一條"線"(Wire)。

與物理線不同但十分相似,Verilog中的線(和其他信號)是定向的。

這意味著信息只在一個方向上流動,從(通常是一個)源流向匯點(該源通常也被稱為驅動程序將值驅動到wire上)。

在verilog"連續賦值"(assign left_side=right_side;)中,右側的信號值被驅動到左側的"線"上

請注意:賦值是"連續的"(Continuous Assignments),因為如果右側的值發生更改,分配也會一直持續,因此左側的值將隨之改變。(這里與其他語言有很大區別)。 連續分配不是一次性事件,其產生的變化是永久的。

想要真正理解為啥會這樣,你首先要明白,你并不是在編寫程序,你其實是在用代碼"畫"電路!
因此輸入端的電平高低的變化必然會影響到wire的另一端,你可以想像真的有一根電線連接兩個變量。

模塊(module)上的端口(port)也有一個方向(通常是輸入 – input或輸出 – output)。

輸入端口由來自模塊外部的東西驅動,而輸出端口驅動外部的東西。從模塊內部查看時,輸入端口是驅動程序或源,而輸出端口是接收器。

下圖說明了電路的每個部分如何對應Verilog代碼的每個部分。

  • 模塊和端口聲明創建電路的黑色部分。
  • 您的任務是通過添加一個assign語句來創建一條線(綠色)。
  • 盒子外的部件不是您的問題,但您應該知道,通過將測試激勵連接到top_module上的端口來測試電路。

除了連續賦值之外,Verilog還有另外三種用于程序塊(Procedural block)的賦值類型,其中兩種是可綜合的。在開始使用Procedural block之前,我們不會使用它們.

  • Module Declaraction
module top_module( input in, output out );
  • Solution
module top_module( input in, output out );assign out = in;
endmodule

這里的 Module Declaraction 和 Solution就像是對應C里面的聲明和定義實現

- Four wires

創建一個具有3個輸入和4個輸出的模塊,這些輸入和輸出的行為如下:

A ->W
B -> X
B -> Y
C -> Z

下圖說明了電路的每個部分如何對應Verilog代碼的每個部分.模塊外部有三個輸入端口和四個輸出端口.

當您有多個assign語句時,它們在代碼中的出現順序并不重要.與編程語言不同,assign語句(“連續賦值”)描述事物之間的連接,而不是將值從一個事物復制到另一個事物的操作.

可能現在應該澄清的一個潛在的困惑來源是:這里的綠色箭頭表示電線之間的連接,但不是wire本身.

模塊本身已經聲明了7條線(名為A、B、C、W、X、Y和Z).這是因為input與output被聲明為了wire類型.因此,assign語句不會創建wire,而是描述了在已存在的7條線之間創建的連接.

  • Module Declaraction
module top_module(input a,b,c;output w,x,y,z
);
  • Solution
module top_module( input a,b,c,output w,x,y,z );assign w=a;assign x=b;assign y=b;assign z=c;
endmodule
- 反轉器 (Inveter)

創建實現非門的模塊.

這個電路和電線相似,但有點不同.當把電線從進線連接到出線時,我們要實現一個反相器(非門),而不是一根

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

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

相關文章

一次線程數超限導致的hive寫入hbase作業失敗分析

1.集群配置 操作系統:SuSe操作系統 集群節點:100臺相同配置的服務器 單臺:核心112Core,內存396G 2.問題現象 現象1:跑單個入庫任務報錯,批量提交任務后出現OOM異常 執行12個hivesql,將數據寫入hbase.hbase入庫有近一半的任務報錯。 每次報錯的任務不是同一個,hivesql…

優化fm.jiecao.jcvideoplayer_lib中視頻橫豎屏自動適配原視頻方案

fm.jiecao:jiecaovideoplayer:x.x.x 優化fm.jiecao.jcvideoplayer_lib中視頻橫豎屏自動適配原視頻方案: 僅優化關鍵代碼部分,源碼: public void startWindowFullscreen() {Log.i(TAG, "startWindowFullscreen " " [" …

多無人機--強化學習

這個是我對于我的大創項目的構思,隨著時間逐漸更新 項目概要 我們的項目平臺來自挑戰杯揭綁掛帥的無人機對抗項目,但是在由于時間原因,并未考慮強化學習,所以現在通過大創項目來彌補遺憾 我們項目分為三部分,分為虛…

工業相機常用詞語解釋

線陣相機和面陣相機: 線陣相機,是采用線陣圖像傳感器的相機。線陣圖像傳感器以CCD為主, 一行的數據可以到幾K甚至幾十K,但是高度只有幾個像素,行頻很高,可以到每秒幾萬行,適合做非常高精度、寬…

2501,編寫dll

DLL的優點 簡單的說,dll有以下幾個優點: 1)節省內存.同一個軟件模塊,若是源碼重用,則會在不同可執行程序中編譯,同時運行這些exe時,會在內存中重復加載這些模塊的二進制碼. 如果使用dll,則只在內存中加載一次,所有使用該dll的進程會共享此塊內存(當然,每個進程會復制一份的d…

Python----Python高級(并發編程:進程Process,多進程,進程間通信,進程同步,進程池)

一、進程Process 擁有自己獨立的堆和棧,既不共享堆,也不共享棧,進程由操作系統調度;進程切換需要的資源很最大,效率低。 對于操作系統來說,一個任務就是一個進程(Process)&#xff…

在Mapbox GL JS中“line-pattern”的使用詳解

在Mapbox GL JS中,line-pattern 是一種用于在地圖上繪制帶有圖案的線條的樣式屬性。通過 line-pattern,你可以使用自定義的圖像作為線條的圖案,而不是使用純色或漸變。 1. 基本概念 line-pattern: 該屬性允許你指定一個圖像作為線條的圖案。…

C++ Primer 算術運算符

歡迎閱讀我的 【CPrimer】專欄 專欄簡介:本專欄主要面向C初學者,解釋C的一些基本概念和基礎語言特性,涉及C標準庫的用法,面向對象特性,泛型特性高級用法。通過使用標準庫中定義的抽象設施,使你更加適應高級…

【大數據技術】本機PyCharm遠程連接虛擬機Python

本機PyCharm遠程連接虛擬機Python 注意:本文需要使用PyCharm專業版。 pycharm-professional-2024.1.4VMware Workstation Pro 16CentOS-Stream-10-latest-x86_64-dvd1.iso寫在前面 本文主要介紹如何使用本地PyCharm遠程連接虛擬機,運行Python腳本,提高編程效率。 注意: …

堆(Heap)的原理與C++實現

1. 什么是堆? 堆(Heap)是一種特殊的樹形數據結構,通常用于實現優先隊列。堆可以分為兩種類型: 最大堆(Max Heap):每個節點的值都大于或等于其子節點的值。最小堆(Min H…

移除元素-雙指針(下標)

題目 給你一個數組 nums 和一個值 val,你需要 原地 移除所有數值等于 val 的元素。元素的順序可能發生改變。然后返回 nums 中與 val 不同的元素的數量。 假設 nums 中不等于 val 的元素數量為 k,要通過此題,您需要執行以下操作&#xff1a…

log4j2日志配置文件

log4j2配置文件每個項目都會用到,記錄一個比較好用的配置文件,方便以后使用時調取,日志輸出級別為debug,也可以修改 <?xml version"1.0" encoding"UTF-8"?> <Configuration monitorInterval"180" packages""><prope…

高等代數筆記—映射與線性空間

映射 映射&#xff1a; σ : M → M ′ \sigma: M \to M σ:M→M′ σ ( a ) a ′ , a ∈ M , a ′ ∈ M ′ \sigma(a)a, a\in M, a \in M σ(a)a′,a∈M,a′∈M′ a ′ a a′是 a a a在 σ \sigma σ下的像&#xff0c; a a a是 a ′ a a′在 σ \sigma σ下的原像 σ : …

提示詞實踐總結

目錄 一、要求創建SqlServer表&#xff08;ChatGpt&#xff09; 二、要求生成多層架構代碼&#xff08;Cursor&#xff09; 三、要求修改方法返回值類型&#xff08;Cursor&#xff09; 四、要求修改方法入參&#xff08;Cursor&#xff09; 五、復雜的多表關聯生成&#…

java進階文章鏈接

java 泛型&#xff1a;java 泛型詳解-絕對是對泛型方法講解最詳細的&#xff0c;沒有之一 Java 泛型&#xff0c;你了解類型擦除嗎&#xff1f; java 注解&#xff1a;深入理解Java注解類型 秒懂&#xff0c;Java 注解 &#xff08;Annotation&#xff09;你可以這樣學 jav…

MyBatis-Plus筆記-快速入門

大家在日常開發中應該能發現&#xff0c;單表的CRUD功能代碼重復度很高&#xff0c;也沒有什么難度。而這部分代碼量往往比較大&#xff0c;開發起來比較費時。 因此&#xff0c;目前企業中都會使用一些組件來簡化或省略單表的CRUD開發工作。目前在國內使用較多的一個組件就是…

Maven jar 包下載失敗問題處理

Maven jar 包下載失敗問題處理 1.配置好國內的Maven源2.重新下載3. 其他問題 1.配置好國內的Maven源 打開??的 Idea 檢測 Maven 的配置是否正確&#xff0c;正確的配置如下圖所示&#xff1a; 檢查項?共有兩個&#xff1a; 確認右邊的兩個勾已經選中&#xff0c;如果沒有請…

Spring 核心技術解析【純干貨版】- IX:Spring 數據訪問模塊 Spring-Jdbc 模塊精講

在現代企業級應用中&#xff0c;數據訪問層的穩定性和高效性至關重要。為了簡化和優化數據庫操作&#xff0c;Spring Framework 提供了 Spring-JDBC 模塊&#xff0c;旨在通過高度封裝的 JDBC 操作&#xff0c;簡化開發者的編碼負擔&#xff0c;減少冗余代碼&#xff0c;同時提…

探秘AI的兩大核心:決策式AI與生成式AI?

目錄 一、引言 二、從定義上來看 1. 決策式AI&#xff08;Discriminative AI&#xff09; 2. 生成式AI&#xff08;Generative AI&#xff09; 三、從技術原理上來看 1. 決策式AI&#xff08;Discriminative AI&#xff09; 2. 生成式AI&#xff08;Generative AI&#…

2.5學習

misc buuctf-假如給我三天光明 下載附件后得到了一個壓縮包和一個圖片&#xff0c;壓縮包為加密壓縮包&#xff0c;需要解出密碼&#xff0c;然后注意到這個圖片并非簡單的一個封面&#xff0c;在下方還有諸多點&#xff0c;有黑有灰。經過搜索&#xff0c;發現這是盲文通過與…