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

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

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

數(shù)字電路里面有什么元素需要被描述?

電子工程師 ? 來源:未知 ? 作者:李倩 ? 2018-09-07 14:47 ? 次閱讀

初識Verilog描述-1

“Verilog不同于C,Python,JAVA等軟件語言,Verilog是以數(shù)字電路知識為背景支撐,以對數(shù)字電路系統(tǒng)進(jìn)行描述的一門語言。因此用Verilog描述數(shù)字電路,必須要有數(shù)字電路知識為背景支撐。否則描述出來的電路性能將會(huì)很差。本篇我們先了解一下最基本的Verilog對數(shù)字電路描述的方法與代碼風(fēng)格,具體語法細(xì)節(jié)在這不做過多解釋?!?/p>

在了解Verilog基本構(gòu)成之前,先要了解數(shù)字電路里面有什么元素需要被描述。

如下圖所示,為一個(gè)實(shí)例電路外部原理圖:

從外部看一個(gè)電路需要描述的元素如下:

電路名字

輸入端口以及位寬

輸出端口以及位寬

端口描述有兩種方式。

以上圖為例:

(1)

module share_1(

clk,

rst_n,

a,

b,

data_out

);

input clk;

input rst_n;

input[7:0] a;

input[7:0] b;

output[8:0] data_out;

(2)

module share_1(

input clk,

input rst_n,

input [7:0] a,

input [7:0] b,

output [8:0] data_out

);

下圖為其內(nèi)部電路結(jié)構(gòu):

電路內(nèi)部需要描述元素有:

信號的類型:reg型(所有在always電路里面將要做改變的信號),wire型(電路信號連線)

如上例電路:輸入信號本來就為電路信號連線,且在端口聲明中已經(jīng)聲明,無需再做wire 聲明。

輸出信號data_out是寄存器的輸出,因此聲明為: reg[8:0] data_out;

節(jié)點(diǎn)信號add_out(對應(yīng)電路上的OUT),為加法器的輸出。如果加法器是用always塊實(shí)現(xiàn)的,如下:

always @( * ) begin

add_out = a+b;

end

則聲明為reg型: reg[8:0] add_out;

如果加法器是用assign語句實(shí)現(xiàn)的,如下:

assign add_out = a+b;

則聲明為wire型: wire[8:0] add_out;

注意:所有聲明必須帶上位寬,否則系統(tǒng)工具將其默認(rèn)為單位寬,如上信號add_out為9位寬,因此聲明為 reg [8:0] add_out;

組合邏輯電路: 可以利用 assign 或者 always @(*) 語句描述。一般復(fù)雜的組合邏輯電路利用 always @(*)語句塊描述。如上加法器的實(shí)現(xiàn)既可以用always語句實(shí)現(xiàn),也可以利用assign語句實(shí)現(xiàn)。

寄存器(有如下幾種常用的不同的寄存器模型):

(1) 時(shí)鐘信號上升沿驅(qū)動(dòng),復(fù)位信號低電平有效,與時(shí)鐘異步復(fù)位:

always @( posedge clk or negedge rst_n ) begin

if( !rst_n )

data_out <= 8h00;

else

data_out <= data_in;

end

(2)時(shí)鐘信號上升沿驅(qū)動(dòng),復(fù)位信號高電平有效,與時(shí)鐘異步復(fù)位:

always @( posedge clk or posedge rst ) begin

if( rst )

data_out <= 8h00;

else

data_out <= data_in;

end

(3) 時(shí)鐘信號下降沿驅(qū)動(dòng),復(fù)位信號高電平有效,與時(shí)鐘同步復(fù)位:

always @( negedge clk ) begin

if( rst_n )

data_out <= 8h00;

else

data_out <= data_in;

end

(4)時(shí)鐘信號上升沿驅(qū)動(dòng),復(fù)位信號低電平有效,與時(shí)鐘同步復(fù)位,并且?guī)в懈唠娖绞鼓苄盘枺?/p>

always @( posedge clk ) begin

if( !rst_n )

data_out <= 8h00;

else if( enable )

data_out <= data_in;

else

data_out <= data_out;

end

給出兩種完整的描述方式,大家自行體會(huì),電路功能為帶寄存器輸出的8位無符號數(shù)加法器:

(1)

module share_1(

clk,

rst_n,

a,

b,

data_out

);

input clk;

input rst_n;

input[7:0] a;

input[7:0] b;

output[8:0] data_out;

reg[8:0] data_out;

wire[8:0] add_out;

assign add_out = a+b;

always @( posedge clk or negedge rst_n ) begin

if( !rst_n )

data_out <= 9h00;? ? ? ? ? ? ? ? ? ? ? ? ??

else

data_out <= add_out;? ? ? ? ? ? ? ? ? ? ? ??

end

endmodule

(2)

module share_1(

input clk,

input rst_n,

input [7:0] a,

input [7:0] b,

output [8:0] data_out

);

reg[8:0] data_out ;

reg[8:0] add_out;

always @( * ) begin

add_out = a+b;

end

always @( posedge clk or negedge rst_n ) begin

if( !rst_n )

data_out <= 9h00;? ? ? ? ? ? ? ? ? ? ? ??

else

data_out <= add_out;? ? ? ? ? ? ? ? ? ? ??

end

endmodule

注:這里只是帶著大家從電路入手,宏觀的了解一下Verilog描述數(shù)字電路的結(jié)構(gòu)與注意事項(xiàng),具體語法可自行學(xué)習(xí)。

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

    關(guān)注

    13

    文章

    492

    瀏覽量

    42535
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1343

    瀏覽量

    109925
  • 數(shù)字電路
    +關(guān)注

    關(guān)注

    193

    文章

    1595

    瀏覽量

    80379

原文標(biāo)題:初識Verilog描述-1

文章出處:【微信號:LF-FPGA,微信公眾號:小魚FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    數(shù)字電路和模擬電路的工作各有何特點(diǎn)?

    數(shù)字電路和模擬電路電路設(shè)計(jì)和控制中兩種主要的電路類型。雖然它們都是電路的基本組成部分,但它們在工作原理、特點(diǎn)和應(yīng)用方
    的頭像 發(fā)表于 12-08 10:06 ?2368次閱讀

    華為《高速數(shù)字電路設(shè)計(jì)教材》

    華為《高速數(shù)字電路設(shè)計(jì)教材》這本書是專門為電路設(shè)計(jì)工程師寫的。主要描述模擬電路原理在高速數(shù)字電路設(shè)計(jì)中的分析應(yīng)用
    發(fā)表于 09-01 23:20

    高速數(shù)字電路設(shè)計(jì)中的四種類型的電抗

    四個(gè)電路概念區(qū)分了高頻數(shù)字電路和低頻數(shù)字電路的研究:電容、電感、共模電容、共模電感。這四個(gè)概念有助于我們對高速數(shù)字電路元素
    發(fā)表于 04-11 10:08

    數(shù)字電路的應(yīng)用介紹

      當(dāng)今時(shí)代,數(shù)字電路已廣泛地應(yīng)用于各個(gè)領(lǐng)域。本報(bào)將在“電路與制作”欄里,刊登系列文章介紹數(shù)字電路的基本知識和應(yīng)用實(shí)例。    在介紹基本知識時(shí),我們將以集成數(shù)字電路為主,該
    發(fā)表于 08-28 15:36

    新編數(shù)字電路數(shù)字邏輯

    內(nèi)容簡介  為適應(yīng)電子信息時(shí)代的新形勢和應(yīng)用型本科院校培養(yǎng)應(yīng)用型人才的迫切需要,經(jīng)過教學(xué)改革與實(shí)踐,我們編寫了這本《新編數(shù)字電路數(shù)字邏輯》教材。全書共分8章,分別為:數(shù)字電路基礎(chǔ)知識
    發(fā)表于 10-28 21:36

    DIY Protoboard數(shù)字電路

    描述DIY Protoboard 數(shù)字電路用于電子電路的 0.100" 原型板。這對數(shù)字和模擬設(shè)計(jì)都有好處
    發(fā)表于 07-27 06:31

    數(shù)字電路設(shè)計(jì)

    數(shù)字電路設(shè)計(jì) 關(guān)于高速數(shù)字電路的電氣特性,設(shè)計(jì)重點(diǎn)大略可分為三項(xiàng): 正時(shí)(Timing) :由于數(shù)字電路
    發(fā)表于 08-26 19:08 ?2799次閱讀

    《VHDL與數(shù)字電路設(shè)計(jì)》

    《VHDL與數(shù)字電路設(shè)計(jì)》是有盧毅、賴杰主編的,主要介紹涉及數(shù)字系統(tǒng)設(shè)計(jì)的多方面原理、技術(shù)及應(yīng)用,主要內(nèi)容有數(shù)字系統(tǒng)的基本設(shè)計(jì)思想、設(shè)計(jì)方法和設(shè)計(jì)步驟, VHDL 硬件描述語言
    發(fā)表于 07-11 15:54 ?0次下載
    《VHDL與<b class='flag-5'>數(shù)字電路</b>設(shè)計(jì)》

    數(shù)字電路

    數(shù)字電路篇,VHDL資料,又需要的下來看看
    發(fā)表于 08-08 17:03 ?66次下載

    什么是模擬電路 什么是數(shù)字電路

      模擬信號和數(shù)字信號的特點(diǎn)不同,處理這兩種信號的方法和電路也不同。一般地, 電子電路可分為模擬電路數(shù)字電路兩大類?!   ?. 模擬
    的頭像 發(fā)表于 10-16 10:25 ?10.1w次閱讀

    數(shù)字電路比模擬電路的優(yōu)點(diǎn)

    本文主要詳細(xì)介紹了數(shù)字電路比模擬電路的優(yōu)點(diǎn),分別是數(shù)字電路結(jié)構(gòu)簡單、數(shù)字電路容易標(biāo)準(zhǔn)化、數(shù)字電路能夠滿足對信號保真度的要求。
    發(fā)表于 05-16 17:50 ?1.8w次閱讀

    VHDL概述及在描述數(shù)字電路時(shí)的結(jié)構(gòu)

    本文介紹了一種硬件描述語言VHDL,以及它在描述數(shù)字電路時(shí)的結(jié)構(gòu)。我們還將介紹一些介紹性的示例電路描述,并討論“std_logical”和“
    發(fā)表于 07-21 11:30 ?2357次閱讀
    VHDL概述及在<b class='flag-5'>描述</b><b class='flag-5'>數(shù)字電路</b>時(shí)的結(jié)構(gòu)

    基于FPGA的數(shù)字電路設(shè)計(jì)

    數(shù)字電路作為一門專業(yè)基礎(chǔ)課,除了介紹數(shù)字電路的理論知識外,更需要通過配套的實(shí)驗(yàn)平臺(tái)將理論知識和實(shí)踐環(huán)節(jié)相結(jié)合,培養(yǎng)學(xué)生的動(dòng)手能力和實(shí)踐創(chuàng)新能力。
    的頭像 發(fā)表于 08-16 12:03 ?7428次閱讀
    基于FPGA的<b class='flag-5'>數(shù)字電路</b>設(shè)計(jì)

    數(shù)字電路設(shè)計(jì)的基本流程

    數(shù)字電路設(shè)計(jì)是數(shù)字電路最為關(guān)鍵及重要的一步,今天我們將從各個(gè)流程為大家介紹完整的數(shù)字電路設(shè)計(jì)!
    的頭像 發(fā)表于 07-10 17:14 ?7605次閱讀

    建立/保持時(shí)間對數(shù)字電路的影響

    之一,它對數(shù)字電路的運(yùn)作和性能產(chǎn)生著重要的影響。在本文中,我們將探討時(shí)間與數(shù)字電路之間的關(guān)系,并分析它對于數(shù)字電路性能的影響。 數(shù)字電路包括各類邏輯門、計(jì)數(shù)器、觸發(fā)器和存儲(chǔ)器等多種器件
    的頭像 發(fā)表于 10-29 14:21 ?669次閱讀