99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

FPGA開發(fā)環(huán)境的搭建和verilog代碼的實(shí)現(xiàn)

CHANBAEK ? 來源:小小研究生 ? 作者:xxyjs2020 ? 2023-05-11 17:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

FPGA需要良好的數(shù)電模電基礎(chǔ),verilog需要良好C語言基礎(chǔ)。

FPGA的準(zhǔn)備工作:下載Quartus II,Modelsim和notepad++(notepad++是文本編輯器,quartus有自帶的,可以不裝,也可以用其他的)。后臺(tái)回復(fù)“FPGA軟件下載”獲取安裝包。安裝完成后,實(shí)現(xiàn)Quartus II與Modelsim和notepad++的關(guān)聯(lián)(不關(guān)聯(lián)notepad++的話默認(rèn)用quartus自帶的)。方法是:tools欄的option,如下圖選中Win64。

圖片

關(guān)聯(lián)notepad++如圖,在文件夾中選擇安裝好的exe應(yīng)用程序。

圖片

Verilog可能是FPGA路上的第一個(gè)絆腳石,但是代碼類的學(xué)習(xí)都是熟能生巧,掌握規(guī)律只需3天即可上手。

基礎(chǔ)語法

1、區(qū)分大小寫,分號(hào)結(jié)尾(空格、換行無意義),單行注釋用//,多行注釋用/* 代碼 */,標(biāo)識(shí)符區(qū)分大小寫,關(guān)鍵字小寫。

2、0表示假,1表示真,X/x表示未知,Z/z表示高阻。

3、十進(jìn)制('d 或 'D),十六進(jìn)制('h 或 'H),二進(jìn)制('b 或 'B),八進(jìn)制('o 或 'O),4'b1011中4表示位數(shù),b表示進(jìn)制,1011是數(shù)值。 字符串用雙引號(hào)且不能換行。

4、最常用的數(shù)據(jù)類型:wire和reg,wire 表示物理連線,reg表示存儲(chǔ)單元。

5、表達(dá)式由操作符和操作數(shù)構(gòu)成,其中操作符有算術(shù)、關(guān)系、等價(jià)、邏輯、按位、歸約、移位、拼接、條件共9種,操作數(shù)可以是任意的數(shù)據(jù)類型。注意邏輯與(&&)、按位與(&)。

數(shù)電中有組合邏輯電路和時(shí)序邏輯電路。組合邏輯電路模塊:

6、連續(xù)賦值語句以assign開頭用于對(duì) wire 型變量進(jìn)行賦值

7、普通時(shí)延:assign #10 Z = A & B ; 把A與B的結(jié)果延時(shí)10個(gè)單位再賦值給Z。 隱式時(shí)延:wire #10 Z = A & B; 聲明wire型變量時(shí)對(duì)其進(jìn)行包含一定時(shí)延的連續(xù)賦值。 A 或 B 任意一個(gè)變量發(fā)生變化,那么 Z會(huì)有 10 個(gè)時(shí)間單位的時(shí)延。 如果在這 10 個(gè)時(shí)間單位內(nèi),A 或 B 任意一個(gè)值又發(fā)生了變化,那么計(jì)算 Z 的新值時(shí)會(huì)取 A 或 B 當(dāng)前的新值。 所以稱之為慣性時(shí)延,即信號(hào)脈沖寬度小于時(shí)延時(shí),對(duì)輸出沒有影響。 因此仿真時(shí),時(shí)延一定要合理設(shè)置,防止某些信號(hào)不能進(jìn)行有效的延遲。

時(shí)序邏輯電路模塊:

8、一個(gè)模塊中可以包含多個(gè) initial 和 always 語句,但 2 種語句不能嵌套使用。 語句在模塊間并行執(zhí)行,與前后順序無關(guān)。 語句內(nèi)部是順序執(zhí)行的(非阻塞賦值除外)。 **initial **語句從 0 時(shí)刻開始執(zhí)行,只執(zhí)行一次,多個(gè) initial 塊之間是相互獨(dú)立的。 如果 initial 塊內(nèi)包含多個(gè)語句,需要使用關(guān)鍵字 begin 和 end 組成一個(gè)塊語句。 只包含一條語句可以不用。 **always **語句是重復(fù)執(zhí)行的。 always 語句塊從 0 時(shí)刻開始執(zhí)行其中的行為語句; 當(dāng)執(zhí)行完最后一條語句后,便再次執(zhí)行語句塊中的第一條語句,如此循環(huán)反復(fù)。 always 語句多用于仿真時(shí)鐘的產(chǎn)生,信號(hào)行為的檢測等。

后面會(huì)結(jié)合數(shù)電詳細(xì)講解。

推薦使用hdlbits網(wǎng)站刷題,非常基礎(chǔ),給出了模塊的框架,只需要按照需求填入關(guān)鍵語句。

1、熟悉wire

圖片

module top_module(
    input a,
    input b,
    input c,
    input d,
    output out,
    output out_n ); 
    assign out=(a&b)|(c&d);
    assign out_n=~((a&b)|(c&d));
endmodule

verilog采用自頂向下的設(shè)計(jì)方法,分模塊設(shè)計(jì),這樣做的好處是,不同的人可以負(fù)責(zé)不同的模塊,最后組裝起來。 每個(gè)模塊都以Module 模塊名開始,以endmodule結(jié)尾,且需要定義輸入輸出,以及輸出與輸入的關(guān)系。 在這個(gè)實(shí)例中,需要填入的就是兩個(gè)assign語句,得到out和out_n。

2、熟悉向量

當(dāng)位寬大于 1 時(shí),wire 或 reg 即可聲明為向量的形式。

圖片

module top_module( 
    input [2:0] a,
    input [2:0] b,
    output [2:0] out_or_bitwise,
    output out_or_logical,
    output [5:0] out_not
);
assign out_or_bitwise=a|b;
assign    out_or_logical=a||b;
assign  out_not={~b,~a};
endmodule

邏輯或||和位或|的區(qū)別:位或是兩個(gè) N 位向量之間的每一位都進(jìn)行或運(yùn)算形成N位新向量,而邏輯運(yùn)算將整個(gè)向量視為布爾值(true = 非零,false = 零)并生成 1 位輸出。{向量1,向量2,...}可以用于合并向量。位數(shù)少時(shí)可以用于向量反轉(zhuǎn),例如in[3:0]反轉(zhuǎn)可以使out={in[0],in[1],in[2],in[3]}。

圖片

module top_module (
    input a, b, c, d, e,
    output [24:0] out );//
    assign out=~{{5{a}},{5},{5{c}},{5ys2uquk},{5{e}}}^{5{a,b,c,d,e}};
endmodule

向量復(fù)制的格式是{復(fù)制次數(shù){向量}},注意復(fù)制后的向量需要用{}。異或是a^b,同或是~a^b。

3、熟悉模塊

和之前在python中一樣,模塊實(shí)例化有非常重要的作用。如果事先定義一個(gè)模塊的功能,后面每一次使用時(shí),都只需要讓自己定義的端口對(duì)應(yīng)上原模塊的端口,就可以調(diào)用。如果不這樣做,每一次使用都需要寫一次這個(gè)模塊的代碼。

實(shí)例化有兩種方式,按位置:mod_a instance1 ( wa, wb, wc );按名稱:mod_a instance2 ( .out(wc), .in1(wa), .in2(wb) );前一種不建議使用,因?yàn)槿绻K的端口列表發(fā)生更改,則還需要查找并更改模塊的所有實(shí)例化以匹配新模塊。后一種雖然寫起來比較復(fù)雜,但是將每一個(gè)端口都對(duì)應(yīng)上,與位置無關(guān)。

圖片

按名稱:

module top_module ( input a, input b, output out );
mod_a instance1 (
    .out(out),
    .in1(a), 
    .in2(b) 
 );
endmodule

按位置:

module top_module ( input a, input b, output out );
    mod_a instance1 (a,b,out);
endmodule

top_module是模塊名,這個(gè)模塊有兩個(gè)輸入端口和一個(gè)輸出端口。這個(gè)模塊里用到了一個(gè)事先定義好的函數(shù)mod_a,也有兩個(gè)輸入端口和輸出端口。將端口對(duì)應(yīng)起來,這個(gè)模塊就可以實(shí)現(xiàn)mod_a的功能。

下面看幾個(gè)復(fù)雜的例子:

移位寄存器

圖片

module top_module ( input clk, input d, output q );
wire q1,q2;
my_dff d0(.clk(clk),.d(d),.q(q1));
 my_dff d1(.clk(clk),.d(q1),.q(q2));
 my_dff d2(.clk(clk),.d(q2),.q(q));
endmodule

這個(gè)模塊名是top_module,有時(shí)鐘,輸入和輸出。實(shí)現(xiàn)定義了一個(gè)函數(shù)my_dff,整個(gè)模塊使用了三次D觸發(fā)器,因此需要實(shí)例化三次。對(duì)于函數(shù)d0,d1,d2都需要把端口對(duì)應(yīng)上,由于q1,q2是引入的變量,用來將前一級(jí)觸發(fā)器輸出和后一級(jí)觸發(fā)器輸入連接上,所以需要先聲明q1,q2是wire型變量。

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

    關(guān)注

    1645

    文章

    22036

    瀏覽量

    618070
  • 邏輯電路
    +關(guān)注

    關(guān)注

    13

    文章

    502

    瀏覽量

    43321
  • Verilog
    +關(guān)注

    關(guān)注

    29

    文章

    1367

    瀏覽量

    112238
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7632

    瀏覽量

    141572
  • 開發(fā)環(huán)境
    +關(guān)注

    關(guān)注

    1

    文章

    242

    瀏覽量

    17121
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Nordic 54L15開發(fā)環(huán)境搭建和開發(fā)文檔誰知道,謝謝

    Nordic 54L15開發(fā)環(huán)境搭建和開發(fā)文檔誰知道,謝謝
    發(fā)表于 03-10 15:34

    ECU試驗(yàn)測試環(huán)境搭建和支持服務(wù)

    ECU試驗(yàn)測試環(huán)境搭建和支持服務(wù)  隨著電子技術(shù)在汽車行業(yè)中的應(yīng)用不斷增長,汽車電子產(chǎn)品系統(tǒng)日益復(fù)雜,如何保證汽車電子產(chǎn)品的質(zhì)量也越
    發(fā)表于 03-11 10:59 ?1712次閱讀

    fpga實(shí)現(xiàn)jpeg Verilog代碼

    本站提供的fpga實(shí)現(xiàn)jpeg Verilog代碼資料,希望能夠幫你的學(xué)習(xí)。
    發(fā)表于 05-27 15:09 ?202次下載

    RP4412 Android4.0 環(huán)境搭建和源碼編譯說明_v1

    RP4412 Android4.0 環(huán)境搭建和源碼編譯說明。
    發(fā)表于 05-04 16:04 ?0次下載

    測試環(huán)境搭建和維護(hù)_軟硬件測試環(huán)境

     測試環(huán)境搭建,每個(gè)公司都有不一樣的流程和方法。一種是運(yùn)維或者開發(fā)負(fù)責(zé)搭建和維護(hù),另一種是測試人員進(jìn)行搭建和維護(hù)。大部分復(fù)雜的測試
    的頭像 發(fā)表于 01-31 18:30 ?7220次閱讀
    測試<b class='flag-5'>環(huán)境</b>的<b class='flag-5'>搭建和</b>維護(hù)_軟硬件測試<b class='flag-5'>環(huán)境</b>

    php開發(fā)環(huán)境搭建和使用

    本文主要介紹的是php開發(fā)環(huán)境搭建和使用。apache在默認(rèn)情況下不會(huì)處理php頁面,Apache處理php頁面的步驟:即:php開發(fā)環(huán)境
    的頭像 發(fā)表于 02-01 15:26 ?3695次閱讀
    php<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>的<b class='flag-5'>搭建和</b>使用

    一文詳解SAM4L8開發(fā)環(huán)境搭建和使用

    本文主要介紹SAM4L8開發(fā)環(huán)境搭建和使用,具體的跟隨小編來詳細(xì)的了解一下。
    的頭像 發(fā)表于 06-18 05:41 ?2982次閱讀
    一文詳解SAM4L8<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>的<b class='flag-5'>搭建和</b>使用

    Atmel Studio 6.2開發(fā)環(huán)境搭建和使用

    本篇搭建和使用的是Atmel Studio 6.2開發(fā)環(huán)境。Atmel Studio 6.2中也給出了這個(gè)發(fā)板的示例程序,本篇文章就一步一步的通過下載和搭建
    的頭像 發(fā)表于 06-18 07:14 ?1.9w次閱讀
    Atmel Studio 6.2<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>的<b class='flag-5'>搭建和</b>使用

    如何搭建鴻蒙開發(fā)環(huán)境

    開發(fā)某一個(gè)平臺(tái)的程序,那么首先要搭建出本地開發(fā)環(huán)境,那么如何搭建鴻蒙開發(fā)
    的頭像 發(fā)表于 02-24 11:25 ?4185次閱讀
    如何<b class='flag-5'>搭建</b>鴻蒙<b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>

    FPGA設(shè)計(jì)中DAC控制的Verilog實(shí)現(xiàn)

    FPGA設(shè)計(jì)中DAC控制的Verilog實(shí)現(xiàn)(單片機(jī)電源維修)-該文檔為FPGA設(shè)計(jì)中DAC控制的Verilog
    發(fā)表于 07-26 12:18 ?18次下載
    <b class='flag-5'>FPGA</b>設(shè)計(jì)中DAC控制的<b class='flag-5'>Verilog</b><b class='flag-5'>實(shí)現(xiàn)</b>

    FPGA開發(fā)環(huán)境搭建和verilog代碼實(shí)現(xiàn)

    FPGA需要良好的數(shù)電模電基礎(chǔ),verilog需要良好C語言基礎(chǔ)。
    發(fā)表于 05-22 15:04 ?1133次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>環(huán)境</b>的<b class='flag-5'>搭建和</b><b class='flag-5'>verilog</b><b class='flag-5'>代碼</b>的<b class='flag-5'>實(shí)現(xiàn)</b>

    Verilog 測試平臺(tái)設(shè)計(jì)方法 Verilog FPGA開發(fā)指南

    Verilog測試平臺(tái)設(shè)計(jì)方法是Verilog FPGA開發(fā)中的重要環(huán)節(jié),它用于驗(yàn)證Verilog設(shè)計(jì)的正確性和性能。以下是一個(gè)詳細(xì)的
    的頭像 發(fā)表于 12-17 09:50 ?1127次閱讀

    迅為RK3576開發(fā)板NPU例程測試-rknn-toolkit2環(huán)境搭建和使用

    迅為RK3576開發(fā)板NPU例程測試-rknn-toolkit2環(huán)境搭建和使用
    的頭像 發(fā)表于 06-17 13:46 ?488次閱讀
    迅為RK3576<b class='flag-5'>開發(fā)</b>板NPU例程測試-rknn-toolkit2<b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建和</b>使用

    迅為RK3576開發(fā)板NPUrknn-toolkit2環(huán)境搭建和使用docker環(huán)境安裝

    迅為RK3576開發(fā)板NPUrknn-toolkit2環(huán)境搭建和使用docker環(huán)境安裝
    的頭像 發(fā)表于 06-18 15:22 ?453次閱讀
    迅為RK3576<b class='flag-5'>開發(fā)</b>板NPUrknn-toolkit2<b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建和</b>使用docker<b class='flag-5'>環(huán)境</b>安裝

    迅為RK3576開發(fā)板NPU環(huán)境搭建和使用rknn-toolkit2功能演示模型轉(zhuǎn)換

    迅為RK3576開發(fā)板NPU環(huán)境搭建和使用rknn-toolkit2功能演示模型轉(zhuǎn)換
    的頭像 發(fā)表于 06-19 10:53 ?383次閱讀
    迅為RK3576<b class='flag-5'>開發(fā)</b>板NPU<b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建和</b>使用rknn-toolkit2功能演示模型轉(zhuǎn)換