国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

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

Verilog HDL描述的組合邏輯環(huán)在FPGA實(shí)現(xiàn)時(shí)到底有什么問題?

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2022-12-12 10:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

課堂上給大家介紹代碼規(guī)范的時(shí)候,反復(fù)強(qiáng)調(diào)不能出現(xiàn)組合邏輯環(huán),具體就是組合邏輯所有的else語句要寫全,case語句也要寫全,但組合邏輯環(huán)到底有什么危害?下面就詳細(xì)舉例說明。

01

什么是組合邏輯環(huán)?

組合邏輯反饋環(huán)路是數(shù)字同步邏輯設(shè)計(jì)的大忌,它最容易因振蕩、毛刺、時(shí)序違規(guī)等問題引起整個(gè)系統(tǒng)的不穩(wěn)定和不可靠。組合邏輯反饋環(huán)路是二種高風(fēng)險(xiǎn)的設(shè)計(jì)方式,主要原因如下:

1.組合反饋環(huán)的邏輯功能完全依賴于其反饋環(huán)路上組合邏輯的門延時(shí)和布線延時(shí)等,如果這些傳播延時(shí)有任何改變,則該組合反饋環(huán)單元的整體邏輯功能將徹底改變,而且改變后的邏輯功能很難確定。

2.組合反饋環(huán)的時(shí)序分析是無窮循環(huán)的時(shí)序計(jì)算,綜合、實(shí)現(xiàn)等EDA 工具迫不得已一般必須主動(dòng)割斷其時(shí)序路徑,以完成相關(guān)的時(shí)序計(jì)算。而不同的EDA工具對(duì)組合反饋環(huán)的處理方法各不相同,所以組合反饋環(huán)的最終實(shí)現(xiàn)結(jié)果有很多不確定因素。

3.通常的綜合工具在處理組合邏輯反饋問題時(shí),將產(chǎn)生Latch,這將對(duì)時(shí)序造成許多問題。

在用Verilog HDL進(jìn)行可綜合電路設(shè)計(jì)時(shí),有很多情況都有可能產(chǎn)生組合邏輯環(huán)。

?在組合邏輯的組合進(jìn)程中, 條件語句描述時(shí)應(yīng)該指定所有條件下所有輸出的狀態(tài),以避免鎖存。比如if/case語句的所有分支必須定義全部的輸出才可能避免出現(xiàn)鎖存。

?在設(shè)計(jì)中,應(yīng)該盡量避免使用鎖存!因?yàn)殒i存要占去大量的觸發(fā)器資源,而且會(huì)對(duì)電路帶來某種不穩(wěn)定的隱患。

?所謂的latch,其實(shí)質(zhì)是組合電路中有反饋!反饋的形成是利用到了前一個(gè)狀態(tài)。

具體舉例如下:

213094e0-79b7-11ed-8abf-dac502259ad0.jpg

2142d362-79b7-11ed-8abf-dac502259ad0.jpg

總結(jié)如下:

?組合電路描述中,條件判斷語句必須指明所有條件分支情況下,被賦值信號(hào)的值。

?分支不完整,意味著電路需要在某種電平狀態(tài)下,讓被賦值的信號(hào)“保持原值”,這只能使用鎖存電路實(shí)現(xiàn)。

02

一個(gè)實(shí)例

設(shè)計(jì)代碼如下:

// **************************************************************

// COPYRIGHT(c)2015, Xidian University

// All rights reserved.

//

// IP LIB INDEX :

// IP Name :

// File name :

// Module name :

// Full name :

//

// Author : Liu-Huan

// Email : assasin9997@163.com

// Data :

// Version : V 1.0

//

// Abstract :

// Called by :

//

// Modification history

// -----------------------------------------------------------------

//

//

//

// *****************************************************************

// *******************

// TIMESCALE

// *******************

`timescale 1ns/1ps

// *******************

// INFORMATION

// *******************

//*******************

//DEFINE(s)

//*******************

//`define UDLY 1 //Unit delay, for non-blocking assignments in sequential logic

//*******************

//DEFINE MODULE PORT

//*******************

module TOP (

input clk ,

input rst

) ;

//*******************

//DEFINE LOCAL PARAMETER

//*******************

//parameter(s)

parameter IDLE = 5'b0_0001 ;

parameter S1 = 5'b0_0010 ;

parameter S2 = 5'b0_0100 ;

parameter S3 = 5'b0_1000 ;

parameter S4 = 5'b1_0000 ;

//*********************

//INNER SIGNAL DECLARATION

//*********************

//REGS

(* mark_debug = "true" *)reg [4:0] c_state ;

(* mark_debug = "true" *)reg [4:0] n_state ;

reg [3:0] cnt ;

(* mark_debug = "true" *) reg [3:0] led ;

//WIRES

//*********************

//INSTANTCE MODULE

//*********************

//*********************

//MAIN CORE

//*********************

always @(posedge clk or posedge rst) begin

if (rst == 1'b1) begin

cnt <= 4'b0 ;

end

else begin

cnt <= cnt+1'b1 ;?

end

end

// 三段式狀態(tài)機(jī) 驗(yàn)證 第二段 if無else的異常跳轉(zhuǎn)

// 第一段 狀態(tài)轉(zhuǎn)移

always @(posedge clk or posedge rst) begin

if (rst == 1'b1) begin

c_state <= IDLE ;?

end

else begin

c_state <= n_state ;

end

end

// 第二段 計(jì)算下一狀態(tài)

always @ (*) begin

case ( c_state )

IDLE : begin

if ( cnt == 'b0 )

n_state = S1 ;

end

S1 : begin

if ( cnt == 'd2 )

n_state = S2 ;

end

S2 : begin

if ( cnt == 'd4 )

n_state = S3 ;

end

S3 : begin

if ( cnt == 'd8 )

n_state = S4 ;

end

S4 : begin

if ( cnt == 'd15 )

n_state = IDLE ;

end

default : begin

n_state = IDLE ;

end

endcase

end

// 第三段 輸出

always @(posedge clk or posedge rst) begin

if (rst == 1'b1) begin

led <= 4'b0 ;

end

else begin

case ( n_state )

IDLE : led <= 4'b0 ;

S1 : led <= 4'd1 ;

S2 : led <= 4'd2 ;

S3 : led <= 4'd3 ;

S4 : led <= 4'd4 ;

default : begin

led <= 4'd0 ; ?

end

endcase

end

end

endmodule


仿真激勵(lì)代碼如下:

`timescale 1ns / 1ps

//////////////////////////////////////////////////////////////////////////////////

// Company:

// Engineer:

//

// Create Date: 2017/12/11 2030

// Design Name:

// Module Name: test

// Project Name:

// Target Devices:

// Tool Versions:

// Description:

//

// Dependencies:

//

// Revision:

// Revision 0.01 - File Created

// Additional Comments:

//

//////////////////////////////////////////////////////////////////////////////////

module test ;

reg clk ;

reg rst ;

initial begin

clk = 1'b0 ;

rst = 1'b1 ;

# 100

rst = 1'b0 ;

end

always # 5 clk = ~clk ;

TOP U_TOP (

.clk ( clk ) ,

.rst ( rst )

) ;

endmodule


上面組合邏輯環(huán)的代碼已經(jīng)用紅色字體顯示。

先看前仿真結(jié)果:

2157f9ea-79b7-11ed-8abf-dac502259ad0.jpg

看不太清?讓我們?cè)倏匆粡垐D。

2163d15c-79b7-11ed-8abf-dac502259ad0.png

狀態(tài)跳變正常,n_state[4:0]按照1、2、4、8、16、1......的順序重復(fù)跳變,沒有任何問題。

但在用FPGA工具(如vivado)進(jìn)行綜合時(shí),會(huì)報(bào)警告:

216f4186-79b7-11ed-8abf-dac502259ad0.jpg

但是上板抓取信號(hào),發(fā)現(xiàn)狀態(tài)機(jī)異常跳轉(zhuǎn),如下圖所示。

21809cc4-79b7-11ed-8abf-dac502259ad0.png

此時(shí)的n_state[4:0]信號(hào)跳變狀態(tài)為:1、2、4、8、9、1......,出現(xiàn)了9這樣的一個(gè)狀態(tài)!

此時(shí),水落石出!出現(xiàn)組合邏輯環(huán)會(huì)給電路帶來嚴(yán)重問題!

而上面的例子是顯而易見的,一眼就能看出來,還有一些組合邏輯環(huán),是在寫代碼時(shí)不小心引入的,并且是由多個(gè)always模塊組成的,這種組合邏輯環(huán)在綜合的時(shí)候也會(huì)報(bào)warning,必須要修改掉之后才能繼續(xù)后續(xù)工作。否則,等真正上板調(diào)試時(shí),規(guī)模稍微大點(diǎn)的設(shè)計(jì)如果要定位到這個(gè)錯(cuò)誤估計(jì)也得花掉好幾天的時(shí)間,所以代碼規(guī)范至關(guān)重要!

03

組合邏輯環(huán)的好處

在實(shí)際芯片設(shè)計(jì)中,也是不允許出現(xiàn)組合邏輯環(huán)的。但組合邏輯環(huán)能夠減少電路邏輯資源,降低電路功耗,具有很多優(yōu)點(diǎn)。但是其難以被靜態(tài)時(shí)序分析工具分析和計(jì)算,且難以生成功能驗(yàn)證向量和自動(dòng)測(cè)試圖形向量.針對(duì)此問題,很多人都提出了多種組合邏輯環(huán)轉(zhuǎn)化方法,以解決硬件描述語言以及高級(jí)語言邏輯綜合階段所面臨的組合邏輯環(huán)拆分問題。


審核編輯 :李倩


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

    關(guān)注

    1660

    文章

    22412

    瀏覽量

    636303
  • Verilog
    +關(guān)注

    關(guān)注

    30

    文章

    1374

    瀏覽量

    114526
  • eda
    eda
    +關(guān)注

    關(guān)注

    72

    文章

    3113

    瀏覽量

    182908

原文標(biāo)題:Verilog HDL描述的組合邏輯環(huán)在FPGA實(shí)現(xiàn)時(shí)到底有什么問題?

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    Verilog HDL語法學(xué)習(xí)筆記

    Verilog HDL 語 言 最 初 是 作為 Gateway Design Automation 公 司 ( Gateway DesignAutomation 公司后來被著名的 Cadence Design Systems 公司收購(gòu))模擬器產(chǎn)品開發(fā)的硬件建模語言。
    的頭像 發(fā)表于 03-04 15:04 ?3017次閱讀
    <b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>語法學(xué)習(xí)筆記

    FPGA 入門必看:Verilog 與 VHDL 編程基礎(chǔ)解析!

    很多開發(fā)者第一次接觸FPGA,都會(huì)有同樣的疑問:FPGA是硬件,不是軟件,怎么寫程序?答案就是用硬件描述語言(HDL),最常用的就是Verilog
    的頭像 發(fā)表于 01-19 09:05 ?453次閱讀
    <b class='flag-5'>FPGA</b> 入門必看:<b class='flag-5'>Verilog</b> 與 VHDL 編程基礎(chǔ)解析!

    自動(dòng)駕駛中毫米波雷達(dá)到底有何作用?

    毫米波雷達(dá)、超聲波雷達(dá)等感知硬件,更像是一個(gè)配角,成為自動(dòng)駕駛技術(shù)實(shí)現(xiàn)的輔助硬件。那自動(dòng)駕駛中毫米波雷達(dá)到底有何作用?
    的頭像 發(fā)表于 12-10 17:07 ?1867次閱讀
    自動(dòng)駕駛中毫米波雷達(dá)<b class='flag-5'>到底有</b>何作用?

    如何使用FPGA實(shí)現(xiàn)SRIO通信協(xié)議

    本例程詳細(xì)介紹了如何在FPGA實(shí)現(xiàn)Serial RapidIO(SRIO)通信協(xié)議,并通過Verilog語言進(jìn)行編程設(shè)計(jì)。SRIO作為一種高速、低延遲的串行互連技術(shù),高性能計(jì)算和嵌
    的頭像 發(fā)表于 11-12 14:38 ?5767次閱讀
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>實(shí)現(xiàn)</b>SRIO通信協(xié)議

    復(fù)雜的軟件算法硬件IP核的實(shí)現(xiàn)

    Compiler)將算法編譯轉(zhuǎn)化為可綜合的 Verilog 文本,進(jìn)而通過 FPGA 硬件上實(shí)現(xiàn)算法。 1.C to Hardware 技術(shù)簡(jiǎn)介 AltiumDesign
    發(fā)表于 10-30 07:02

    如何利用Verilog HDLFPGA實(shí)現(xiàn)SRAM的讀寫測(cè)試

    本篇將詳細(xì)介紹如何利用Verilog HDLFPGA實(shí)現(xiàn)SRAM的讀寫測(cè)試。SRAM是一種非易失性存儲(chǔ)器,具有高速讀取和寫入的特點(diǎn)。
    的頭像 發(fā)表于 10-22 17:21 ?4345次閱讀
    如何利用<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b><b class='flag-5'>在</b><b class='flag-5'>FPGA</b>上<b class='flag-5'>實(shí)現(xiàn)</b>SRAM的讀寫測(cè)試

    使用Simulink自動(dòng)生成浮點(diǎn)運(yùn)算HDL代碼(Part 1)

    引言 想要實(shí)現(xiàn)浮點(diǎn)運(yùn)算功能,如果自己寫Verilog代碼,需要花費(fèi)較多的時(shí)間和精力。好在Simulink HDL Coder工具箱提供了自動(dòng)代碼生成技術(shù)。下圖展示了HDL Coder如
    發(fā)表于 10-22 06:48

    基于FPGA開發(fā)板TSP的串口通信設(shè)計(jì)

    本文詳細(xì)介紹基于Terasic FPGA開發(fā)板TSP(又名C5P和OSK)和其板載CP2102N USB-UART橋接芯片的串口通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)。系統(tǒng)采用Verilog HDL編寫U
    的頭像 發(fā)表于 10-15 11:05 ?4465次閱讀
    基于<b class='flag-5'>FPGA</b>開發(fā)板TSP的串口通信設(shè)計(jì)

    使用VerilogFPGA實(shí)現(xiàn)FOC電機(jī)控制系統(tǒng)

    自動(dòng)駕駛、電動(dòng)滑板車、無人機(jī)甚至工業(yè)自動(dòng)化領(lǐng)域,高性能電機(jī)控制是不可或缺的核心技術(shù)。而如果你對(duì)硬件足夠的熱情,你會(huì)發(fā)現(xiàn):傳統(tǒng)用 MCU 實(shí)現(xiàn) FOC(Field-Oriented Control,磁場(chǎng)定向控制)也能“搬”到
    的頭像 發(fā)表于 08-21 15:27 ?5340次閱讀
    使用<b class='flag-5'>Verilog</b><b class='flag-5'>在</b><b class='flag-5'>FPGA</b>上<b class='flag-5'>實(shí)現(xiàn)</b>FOC電機(jī)控制系統(tǒng)

    電磁干擾“江湖三兄弟”:EMC、EMI、EMS 到底有啥區(qū)別?

    電磁干擾“江湖三兄弟”:EMC、EMI、EMS 到底有啥區(qū)別?
    的頭像 發(fā)表于 08-20 15:16 ?2690次閱讀
    電磁干擾“江湖三兄弟”:EMC、EMI、EMS <b class='flag-5'>到底有</b>啥區(qū)別?

    漫畫科普 | 功率放大器到底有哪些應(yīng)用?帶你解鎖功放經(jīng)典應(yīng)用場(chǎng)景!(一)

    漫畫科普 | 功率放大器到底有哪些應(yīng)用?帶你解鎖功放經(jīng)典應(yīng)用場(chǎng)景!(一)
    的頭像 發(fā)表于 06-20 20:00 ?982次閱讀
    漫畫科普 | 功率放大器<b class='flag-5'>到底有</b>哪些應(yīng)用?帶你解鎖功放經(jīng)典應(yīng)用場(chǎng)景!(一)

    實(shí)測(cè) PTR54LS05低功耗到底有多低

    實(shí)測(cè) PTR54LS05低功耗到底有多低?
    發(fā)表于 04-27 10:57

    FPGA Verilog HDL語法之編譯預(yù)處理

    Verilog HDL語言和C語言一樣也提供了編譯預(yù)處理的功能。“編譯預(yù)處理”是Verilog HDL編譯系統(tǒng)的一個(gè)組成部分。Verilog
    的頭像 發(fā)表于 03-27 13:30 ?1437次閱讀
    <b class='flag-5'>FPGA</b> <b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>語法之編譯預(yù)處理

    一文詳解Verilog HDL

    Verilog HDL(Hardware Description Language)是一種硬件描述語言,用于從算法級(jí)、門級(jí)到開關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建模。現(xiàn)實(shí)生活中多用于專用集成電路
    的頭像 發(fā)表于 03-17 15:17 ?4297次閱讀
    一文詳解<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>

    千兆網(wǎng)絡(luò)PHY芯片RTL8211E的實(shí)踐應(yīng)用

    以太網(wǎng)MAC模塊負(fù)責(zé)實(shí)現(xiàn)以太網(wǎng)MAC子層的功能,完成802.3ab的數(shù)據(jù)封裝與解封。其同時(shí)負(fù)責(zé)適配硬件PHY的物理接口,組成物理層的通訊接口; 硬件系統(tǒng)的功能可以通過 Verilog HDL硬件
    的頭像 發(fā)表于 03-17 13:56 ?9009次閱讀
    千兆網(wǎng)絡(luò)PHY芯片RTL8211E的實(shí)踐應(yīng)用