色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

Vivado HDL編寫示例

CHANBAEK ? 來源:FPGA入門到精通 ? 作者:未可知摩爾 ? 2023-05-16 16:58 ? 次閱讀

Vivado 軟件提供了HDL編寫中常用的示例,旨在幫助初學(xué)者更好地理解和掌握HDL編程,這里分享一下verilog代碼示例。

一、觸發(fā)器、寄存器與鎖存器

Vivado綜合工具根據(jù)HDL代碼會(huì)選擇4種寄存器原語:

  • FDCE:帶有時(shí)鐘使能和異步清0的D觸發(fā)器;
  • FDPE:帶有時(shí)鐘使能和異步預(yù)置(Preset)的D觸發(fā)器;
  • FDSE:帶有時(shí)鐘使能和同步置位的D觸發(fā)器;
  • FDRE:帶有時(shí)鐘使能和同步復(fù)位的D觸發(fā)器;

觸發(fā)器是一種存儲(chǔ)器件,可以用來存儲(chǔ)一個(gè)二進(jìn)制位。 常見的觸發(fā)器有D觸發(fā)器、JK觸發(fā)器、T觸發(fā)器等。

module dff(
    input clk,
    input reset,
    input d,
    output reg q
);

always @(posedge clk or posedge reset) begin
    if (reset) begin
        q <= 0;
    end else begin
        q <= d;
    end
end

endmodule

寄存器是一種廣泛使用的存儲(chǔ)器件,可以在時(shí)序邏輯中存儲(chǔ)多個(gè)比特位,通常由觸發(fā)器或D觸發(fā)器等邏輯單元實(shí)現(xiàn)。 一個(gè)寄存器需要同時(shí)包含時(shí)鐘、使能和數(shù)據(jù)輸入端口

module register(
    input clk,
    input enable,
    input [7:0] d,
    output reg [7:0] q
);

always @(posedge clk) begin
    if (enable) begin
        q <= d;
    end
end

endmodule

Vivado綜合會(huì)報(bào)告檢測出的鎖存器(Latches),這些鎖存器是由組合邏輯HDL代碼設(shè)計(jì)錯(cuò)誤引起的,比如if或case狀態(tài)不完整。 綜合會(huì)為檢測出的鎖存器報(bào)告一個(gè)WARNING(Synth 8-327)。

module latches (
    input a,
    input b,
    input clr,
    output reg q
);

always @ *
    if(CLR) q = a;
    else if(G) q = b;

endmodule

二、三態(tài)緩沖器

三態(tài)緩沖器是一種帶有使能控制的存儲(chǔ)器件,允許多個(gè)設(shè)備共享同一個(gè)總線信號(hào)。 當(dāng)三態(tài)緩沖器的使能信號(hào)為高時(shí),它就會(huì)輸出輸入信號(hào); 當(dāng)使能信號(hào)為低時(shí),它就會(huì)將輸出信號(hào)設(shè)置為高阻(高阻狀態(tài))。

module tristate_buffer(
    input enable,
    input [7:0] data_in,
    output reg [7:0] data_out,
    inout [7:0] bus
);

assign bus = enable ? data_out : 8'bZ;

always @(bus, enable) begin
    if (enable) begin
        data_out <= data_in;
    end
end

endmodule

三、移位寄存器

移位寄存器是一種可以將數(shù)據(jù)向左或向右移位的存儲(chǔ)器件。 它可以在時(shí)序邏輯中被用來實(shí)現(xiàn)FIR濾波器數(shù)字信號(hào)處理等應(yīng)用。

Vivado 綜合中使用 SRL 類型的資源(SRL16E 和 SRLC32E)來實(shí)現(xiàn)移位寄存器。 根據(jù)移位寄存器的長度不同,在綜合時(shí)會(huì)選擇采用一個(gè) SRL 類型原語,或采用級(jí)聯(lián)的 SRLC 類型原語進(jìn)行實(shí)現(xiàn)。

module shift_register(
    input clk,
    input [7:0] data_in,
    output reg [7:0] data_out
);

reg [7:0] reg_data [0:7];

always @(posedge clk) begin
    for (int i = 7; i > 0; i--) begin
        reg_data[i] <= reg_data[i-1];
    end
    reg_data[0] <= data_in;
end

assign data_out = reg_data[7];

endmodule

四、乘法器

乘法器是一種數(shù)學(xué)運(yùn)算器件,可以在FPGA設(shè)計(jì)中進(jìn)行數(shù)字乘法。 乘法器在數(shù)碼信號(hào)處理器中非常常見,在數(shù)字信號(hào)處理、濾波器和音頻編解碼器等領(lǐng)域有廣泛的應(yīng)用。

Vivado綜合時(shí)會(huì)根據(jù)實(shí)際情況,確定是用LUT實(shí)現(xiàn),還是用DSP實(shí)現(xiàn),建議使用乘法時(shí),計(jì)算結(jié)果輸出多打兩拍,有助于改善時(shí)序。

module multiplier_unsigned(
    input clk, 
    input [7:0] a,
    input [7:0] b,
    output reg signed [15:0] c
);

always @(posedge clk) begin
    c <= a * b;
end

endmodule

五、黑盒子

FPGA設(shè)計(jì)支持EDIF網(wǎng)表,可以在HDL源代碼中使用BLACK_BOX屬性完成實(shí)例化,該實(shí)例將被視作黑盒子。

//模塊定義
(* black_box *) module black_box
(
    input in1, in2, 
    output dout
);
   //此處省略代碼
endmodule

//模塊實(shí)例化
module black_box
(
    input DI_1, DI_2, 
    output DOUT
);

//模塊調(diào)用
black_box u_black_box (
    .in1(DI_1),
    .in2(DI_2),
    .dout(DOUT)
);

endmodule

六、FSM狀態(tài)機(jī)

Vivado綜合時(shí)可以從RTL源碼中提取出有限狀態(tài)機(jī)(FSM)邏輯,支持Moore和Mealy型狀態(tài)機(jī)。 一個(gè)狀態(tài)機(jī)由狀態(tài)寄存器、下一個(gè)狀態(tài)功能、輸出功能三部分組成。

module fsm(
    input clk,
    input reset,
    input [1:0] state_in,
    output reg [1:0] state_out
);

parameter STATE_A = 2'd0;
parameter STATE_B = 2'd1;
parameter STATE_C = 2'd2;

reg [1:0] state_reg;

always @(posedge clk) begin
    if (reset) begin
        state_reg <= STATE_A;
    end else begin
        case (state_reg)
            STATE_A: state_reg <= STATE_B;
            STATE_B: state_reg <= STATE_C;
            STATE_C: state_reg <= STATE_A;
            default: state_reg <= STATE_A;
        endcase
    end
end

assign state_out = state_reg;

endmodule
聲明:本文內(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)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5336

    瀏覽量

    120232
  • HDL
    HDL
    +關(guān)注

    關(guān)注

    8

    文章

    327

    瀏覽量

    47378
  • 鎖存器
    +關(guān)注

    關(guān)注

    8

    文章

    906

    瀏覽量

    41496
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    2000

    瀏覽量

    61132
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    812

    瀏覽量

    66472
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    正弦振蕩用verilog HDL如何編寫

    正弦振蕩用verilog HDL如何編寫
    發(fā)表于 04-15 22:00

    使用Vivado實(shí)現(xiàn)硬宏的示例

    嗨,我正在尋找有關(guān)如何使用Xilinx Vivado創(chuàng)建Hard宏的示例。了解如何在設(shè)計(jì)中修復(fù)路由并在閱讀pdf(下面)時(shí),提到可以根據(jù)要求提供示例,這將非常有幫助。我是否可以收到一些此實(shí)施的
    發(fā)表于 11-12 14:42

    Vivado生成的HDL代碼是否在Vivado自帶的許可證之上有任何特殊的許可

    大家好,我想知道Vivado生成的HDL代碼是否在Vivado自帶的許可證之上有任何特殊的許可。考慮為AXI奴隸生成的代碼,有什么阻止我在設(shè)置中使用它大學(xué)課程的論文?如果代碼剛剛生成并從設(shè)計(jì)訴訟中
    發(fā)表于 12-20 11:23

    怎么將Vivado項(xiàng)目轉(zhuǎn)換為ISE項(xiàng)目

    我想知道是否可以將Vivado項(xiàng)目轉(zhuǎn)換為ISE項(xiàng)目,以便將其導(dǎo)入HDL Designer。 HDL設(shè)計(jì)師確實(shí)有Vivado流,但不是Vivado
    發(fā)表于 12-20 11:24

    vivado_tutorial示例項(xiàng)目文檔內(nèi)容

    你好,我對(duì)vivado很新,并嘗試使用安裝vivado時(shí)提供的一些示例。在expamples \ vivado_toturial \ Projects下可以找到幾個(gè)項(xiàng)目,但是我找不到這
    發(fā)表于 03-27 10:17

    請(qǐng)問如何在Vivado項(xiàng)目中實(shí)例化hdl系統(tǒng)生成器輸出的多個(gè)實(shí)例》

    嗨,如何在Vivado項(xiàng)目中實(shí)例化hdl系統(tǒng)生成器輸出的多個(gè)實(shí)例?在vivado項(xiàng)目中很容易實(shí)例化一個(gè)hdl系統(tǒng)生成器輸出。當(dāng)我想將另一個(gè)實(shí)例實(shí)例化到同一個(gè)項(xiàng)目時(shí),我在合成狀態(tài)下面臨一
    發(fā)表于 07-31 10:38

    Vivado的多種RAM編寫方式

    Vivado綜合可以理解多種多樣的RAM編寫方式,將其映射到分布式RAM或塊RAM中。兩種實(shí)現(xiàn)方法在向RAM寫入數(shù)據(jù)時(shí)都是采取同步方式,區(qū)別在于從RAM讀取數(shù)據(jù)時(shí),分布式RAM采用異步方式,塊RAM
    發(fā)表于 09-29 09:40

    Vivado中進(jìn)行HDL代碼設(shè)計(jì)

    Vivado中進(jìn)行HDL代碼設(shè)計(jì),不僅需要描述數(shù)字邏輯電路中的常用功能,還要考慮如何發(fā)揮Xilinx器件的架構(gòu)優(yōu)勢(shì)。目前常用的HDL語言有三種。VHDL語言的優(yōu)勢(shì)有:語法規(guī)則更加嚴(yán)格;在HD
    發(fā)表于 09-29 10:08

    Vivado中用HDL定義BRAM存儲(chǔ)器并用updatemem合成bit文件

    debug模塊),存放ARM程序的存儲(chǔ)器是實(shí)現(xiàn)在FPGA片上RAM上的;ARM程序用Keil MDK編寫,我希望在測試這個(gè)程序時(shí),不用每次都重新綜合一遍FPGA。 總體來說這個(gè)需求是: Vivado
    發(fā)表于 02-08 05:40 ?4338次閱讀
    <b class='flag-5'>Vivado</b>中用<b class='flag-5'>HDL</b>定義BRAM存儲(chǔ)器并用updatemem合成bit文件

    Verilog HDL語言及VIVADO的應(yīng)用

    中國大學(xué)MOOC 本課程以目前流行的Xilinx 7系列FPGA的開發(fā)為主線,全面講解FPGA的原理及電路設(shè)計(jì)、Verilog HDL語言及VIVADO的應(yīng)用,并循序漸進(jìn)地從組合邏輯、時(shí)序邏輯的開發(fā)開始,深入到FPGA的基礎(chǔ)應(yīng)用、綜合應(yīng)用和進(jìn)階應(yīng)用。
    的頭像 發(fā)表于 08-06 06:12 ?3707次閱讀
    Verilog <b class='flag-5'>HDL</b>語言及<b class='flag-5'>VIVADO</b>的應(yīng)用

    Vivado中電路結(jié)構(gòu)的網(wǎng)表描述

    我們都知道FPGA的實(shí)現(xiàn)過程分為2步:分析綜合與布局布線后就可以產(chǎn)生目標(biāo)文件,這兩個(gè)步驟中間有個(gè)非常重要的文件,那就是-網(wǎng)表。 下圖是Vivado中網(wǎng)表列表示例: ? ? ? ? ? Vivado
    的頭像 發(fā)表于 05-14 10:46 ?4466次閱讀
    <b class='flag-5'>Vivado</b>中電路結(jié)構(gòu)的網(wǎng)表描述

    UM1864_Java編寫游戲示例

    UM1864_Java編寫游戲示例
    發(fā)表于 11-22 19:09 ?0次下載
    UM1864_Java<b class='flag-5'>編寫</b>游戲<b class='flag-5'>示例</b>

    Vivado使用技巧-HDL編寫

    Vivado 中進(jìn)行HDL代碼設(shè)計(jì),不僅需要描述數(shù)字邏輯電路中的常用功能,還要考慮如何發(fā)揮Xilinx器件的架構(gòu)優(yōu)勢(shì)。目前常用的HDL語言有三種。 (1)VHDL 語言的優(yōu)勢(shì)有: 語法規(guī)則更加
    的頭像 發(fā)表于 12-28 17:05 ?3224次閱讀

    自己編寫函數(shù)示例代碼很難嗎?分享幾個(gè)示例

    Q A 問: Arduino Uno的函數(shù)示例 我決定自己編寫函數(shù)示例代碼,因?yàn)檫@應(yīng)該是Arduino中的基本示例。網(wǎng)絡(luò)上確實(shí)有關(guān)于使用函數(shù)的文檔,但是,如果要嘗試使用代碼環(huán)境,則必須
    的頭像 發(fā)表于 11-16 16:05 ?515次閱讀
    自己<b class='flag-5'>編寫</b>函數(shù)<b class='flag-5'>示例</b>代碼很難嗎?分享幾個(gè)<b class='flag-5'>示例</b>!

    編寫高效Testbench的指南和示例

    Testbench是驗(yàn)證HDL設(shè)計(jì)的主要手段,本文提供了布局和構(gòu)建高效Testbench的指南以及示例。另外,本文還提供了一種示例,可以為任何設(shè)計(jì)開發(fā)自檢Testbench。
    的頭像 發(fā)表于 10-29 16:14 ?247次閱讀
    <b class='flag-5'>編寫</b>高效Testbench的指南和<b class='flag-5'>示例</b>
    主站蜘蛛池模板: 国产在线观看www| wwwwxxxx欧美| 三级黄在线播放| 麻豆人妻换人妻X99| 成年人免费在线视频观看| 伊人久久中文大香线蕉综合| 亚洲蜜桃AV永久无码精品放毛片| 日本高清无人区影院| 两性午夜刺激爽爽视频| 国产在线观看成人免费视频| 国产午夜精品AV一区二区麻豆| YY8090福利午夜理论片| 在线中文字幕网站| 4hu四虎免费影院www| 97精品视频在线观看| 最近2018年手机中文字幕| 中文字幕绝色少妇性| 亚洲日本欧美产综合在线| 亚洲国产精品天堂在线播放| 亚洲美女视频高清在线看| 最近中文字幕2019免费版日本| 97亚洲狠狠色综合久久位| 帝王被大臣们调教高肉| 国产亚洲视频在线观看| 国产在线观看91精品| 国产麻豆精品久久一二三| 国产三级精品三级男人的天堂| 国产精品亚洲欧美一区麻豆| 老师扒开尿口男生摸尿口| 受被三个攻各种道具PLAY| 色欲蜜臀AV免费视频| 亚洲精品成人| md2.pud 麻豆传媒官网| 国产精品第100页| 久久不射网| 青柠在线观看免费播放电影| 亚洲高清国产品国语在线观看| 99re久久热在线视频| 国产亚洲精品久久精品6| 欧美激情一区二区三区视频| 日本熟妇多毛XXXXX视频|