新聞中心

EEPW首頁 > 電源與新能源 > 牛人業(yè)話 > 大神教你如何做好邏輯設(shè)計

大神教你如何做好邏輯設(shè)計

——
作者: 時間:2014-05-16 來源:網(wǎng)絡(luò) 收藏

  11)狀態(tài)機要寫成3段式的(這是最標(biāo)準(zhǔn)的寫法),即

本文引用地址:http://butianyuan.cn/article/246996.htm

  ...

  always @(posedge clk or negedge rst_n)

  ...

  current_state <= next_state;

  ...

  always @ (current_state ...)

  ...

  case(current_state)

  ...

  s1:

  if ...

  next_state = s2;

  ...

  ...

  always @(posedge clk or negedge rst_n)

  ...

  else

  a <= 1'b0;

  c <= 1'b0;

  c <= 1'b0; //賦默認值

  case(current_state)

  s1:

  a <= 1'b0; //由于上面賦了默認值,這里就不用再對b、c賦值了(b、c在該狀態(tài)為0,不會產(chǎn)生鎖存器,下同)

  s2:

  b <= 1'b1;

  s3:

  c <= 1'b1;

  default:

  ...

  ...

  3.ALTERA參考設(shè)計準(zhǔn)則

  1) Ensure Clock, Preset, and Clear configurations are free of glitches.

  2) Never use Clocks consisting of more than one level of combinatorial logic.

  3) Carefully calculate setup times and hold times for multi-Clock systems.

  4) Synchronize signals between flipflops in multi-Clock systems whenthe setup and hold time requirements cannot be met.

  5) Ensure that Preset and Clear signals do not contain race conditions.

  6) Ensure that no other internal race conditions exist.

  7) Register all glitch-sensitive outputs.

  Synchronize all asynchronous inputs.

  9) Never rely on delay chains for pin-to-pin or internal delays.

  10)Do not rely on Power-On Reset. Use a master Reset pin to clear all flipflops.

  11)Remove any stuck states from state machines or synchronous logic.

  其它方面的規(guī)范一時沒有想到,想到了再寫,也歡迎大家補充。

  是設(shè)計出來的

  我的boss有在華為及峻龍工作的背景,自然就給我們講了一些華為及altera做邏輯的一些東西,而我們的項目規(guī)范,也基本上是按華為的那一套去做。在工作這幾個月中,給我感觸最深的是華為的那句話:是設(shè)計出來的,不是仿出來的,更不是湊出來的。

  在我們公司,每一個項目都有很嚴格的評審,只有評審?fù)ㄟ^了,才能做下一步的工作。以做邏輯為例,并不是一上來就開始寫代碼,而是要先寫總體設(shè)計方案和邏輯詳細設(shè)計方案,要等這些方案評審?fù)ㄟ^,認為可行了,才能進行編碼,一般來說這部分工作所占的時間要遠大于編碼的時間。

  總體方案主要是涉及模塊劃分,一級模塊和二級模塊的接口信號和(我們要求把接口信號的時序波形描述出來)以及將來如何測試設(shè)計。在這一級方案中,要保證在今后的設(shè)計中時序要收斂到一級模塊(最后是在二級模塊中)。什么意思呢?我們在做詳細設(shè)計的時候,對于一些信號的時序肯定會做一些調(diào)整的,但是這種時序的調(diào)整最多只能波及到本一級模塊,而不能影響到整個設(shè)計。記得以前在學(xué)校做設(shè)計的時候,由于不懂得設(shè)計時序,經(jīng)常因為有一處信號的時序不滿足,結(jié)果不得不將其它模塊信號的時序也改一下,搞得人很郁悶。

  在邏輯詳細設(shè)計方案這一級的時候,我們已經(jīng)將各級模塊的接口時序都設(shè)計出來了,各級模塊內(nèi)部是怎么實現(xiàn)的也基本上確定下來了。

  由于做到這一點,在編碼的時候自然就很快了,最重要的是這樣做后可以讓設(shè)計會一直處于可控的狀態(tài),不會因為某一處的錯誤引起整個設(shè)計從頭進行。

  如何提高工作頻率

  對于設(shè)計者來說,我們當(dāng)然希望我們設(shè)計的的工作頻率(在這里如無特別說明,工作頻率指片內(nèi)的工作頻率)盡量高。我們也經(jīng)常聽說用資源換速度,用流水的方式可以提高工作頻率,這確實是一個很重要的方法,今天我想進一步去分析該如何提高的工作頻率。

  我們先來分析下是什么影響了電路的工作頻率。

  我們電路的工作頻率主要與寄存器到寄存器之間的信號傳播時延及clock skew有關(guān)。在內(nèi)部如果時鐘走長線的話,clock skew很小,基本上可以忽略, 在這里為了簡單起見,我們只考慮信號的傳播時延的因素。

  信號的傳播時延包括寄存器的開關(guān)時延、走線時延、經(jīng)過組合邏輯的時延(這樣劃分或許不是很準(zhǔn)確,不過對分析問題來說應(yīng)該是沒有可以的),要提高電路的工作頻率,我們就要在這三個時延中做文章,使其盡可能的小。

DIY機械鍵盤相關(guān)社區(qū):機械鍵盤DIY


塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理


關(guān)鍵詞: FPGA 時序 電路

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉