【正文】
assignment occurs, the vhdl simulator schedules an event to update the signal value after a certain period of simulation time the signal does not get this new value instantly in the simulation time domain. Also, a signal can exists outside processes. Sounds plicated, but for most of the time you can simply use vhdl signal in your hardware design. (參考譯文:如果在端口表中聲明了 PIN8, 這兩個示例是一樣的 . 從硬件設(shè)計的角度看 , 可以將 vhdl signal視為電子信號 . 因此 , 基本上可以將每個對象聲明為“ signal” . 從仿真角度看 , vhdl中的 signal 與 variable是根本不同的 . 變量只不過是擁有值的對象 . 變量分配即時出現(xiàn)在 vhdl 仿真中 . 而且 , 變量只能存在于一個過程內(nèi) , 因此它不能通過過程來傳遞值 . 另一方面 , 信號有多個值 . 不論何時分配信號 , vhdl仿真都會在某個仿真時段安排一個事件來更新信號的值 . 在仿真時域里 , 信號不會立即獲得這個新的值 . 而且信號可以存在于過程之外 . 聽起來好象有點復(fù)雜 , 但大多數(shù)時候 , 在硬件設(shè)計中可以只使用 vhdl 信號 . ) 34. 如果輸入時鐘必須經(jīng)過一段組合邏輯 (比如需要進行時鐘選擇 , 可選外部或內(nèi)部時鐘 ), 那么在 DFF 使能端加控制是無法解決的 , 有什么更好的方法 ? 答: A simple answer is to use the BUFGMUX resource in Xilinx VirtexII devices. The BUFGMUX is actually a global clock buffer in VirtexII which incoporates a smart mux to switch between 2 clock sources. More importantly, the BUFGMUX guarantees glitchfree switching between these 2 clocks, even though the select signal changes asynchronously. (參考譯文:簡單的方法是使 用 Xilinx VirtexII 器件上的 BUFGMUX資源 . BUFGMUX實際上是 VirtexII 中的全局時鐘緩沖 , VirtexII 將智能 mux與 2 個時鐘源之間的切換相結(jié)合 . 更為重要的是 , 即使選擇信號更改不同步 , BUFGMUX 也能保證這兩個時鐘之間的無干擾切換 . ) 35. 用 Altera 器件設(shè)計一個電路 , 外掛一同步存儲器件 . 邏輯設(shè)計和存儲器件的時鐘是相同的 , 但由于時鐘信號帶負載能力較差 , 只能接一個負載 , 所以將時鐘信號接在可編程器件上 , 而用內(nèi)部賦值語句將時鐘信號賦值給某一引腳 , 此引腳信號 再接到存儲器件的時鐘引腳 , 但這樣存在一個問題:存儲器件的讀寫信號相對于 Altera 器件上的時鐘信號有延遲 , 存儲器件的時鐘信號相對于 Altera 器件上的時鐘信號也有延遲 , 這樣存儲器件的時鐘信號與讀寫信號之間的時間差難以控制 , 極有可能不滿足存儲器件的Setup/hold 時間 , 有什么好的方法解決此問題? 答:可以利用 ALTERA 器件中的 PLL 來精確控制延時 . ALTERA 中的 PLL 是一個真正的模擬鎖相環(huán) , 它可以提供精確的時鐘頻率合成與相位延時的細微調(diào)整 . 可以將時鐘信號按照你的要求進行延遲調(diào)整 . 假如采用的器件沒有 PLL的話 , 那么可能需要在邏輯內(nèi)部來做一些延時邏輯 , 不過這樣會導(dǎo)致異步邏輯設(shè)計 , 我們一般情況下不推薦這樣用 . 還有一種辦法就是在 PCB 板上來調(diào)整時延 . 關(guān)于 PLL 的詳細資料可以參考 ALTERA的相關(guān)文檔 . 36. 利用 ACEX1K 系列片內(nèi) EAB 單元創(chuàng)建 RAM 時 , 每創(chuàng)建一個容量較小的 RAM 時就要占用一個 EAB 單元 , 能否將多個 RAM 整合由一個 EAB 實現(xiàn) , 以節(jié)約片內(nèi)的 EAB單元 ? 答:在 ACEX1K 系列的器件中 , 一個 EAB 單元目前只能做一個應(yīng)用 , 我們現(xiàn)在的軟件還不支持 將多個小的 RAM 集成到一個 EAB 當中 . 37. Synthesis Style 設(shè)為 FAST 后 , 發(fā)現(xiàn)速度有所提升 , 同時使用的資源也減少了 , 資源和速度似乎兼得了 , 那么是否所有的模塊都可以設(shè)定為 FAST 呢? 答:將 SYNTHESIS STYLE設(shè)置為 FAST 主要是為了提高系統(tǒng)性能 . 但是有一點要記住的是 , 軟件的設(shè)置不是在任何情況下對所有的設(shè)計都表現(xiàn)出相同的結(jié)果 . 針對這個設(shè)計模塊 , 將 SYNTHESIS STYLE設(shè)置為 FAST 可能對資源和速度都有了優(yōu)化 , 但這并不說明對所有的模塊都有相同的效 果 , 但是可以試一試 . 設(shè)計優(yōu)化是一個原則與經(jīng)驗 , 技巧相結(jié)合的過程 , 我們只掌握一定的原則與方法 , 根據(jù)我們自己的經(jīng)驗 , 運用一定的技巧 , 才能將一個設(shè)計做到最優(yōu)化 . 38. I am now going to design a gray coded 16 bits counter , any efficient way to implement it in VHDL description? (要設(shè)計一個灰色編碼 16 位的計數(shù)器 , 怎么以 VHDL 描述來實現(xiàn)它?) 答: You can just use megawizard(lpm_counter) in the software to generate the counter for you, select the output language with VHDL. That should be the efficient way to implement a counter, and you don39。t to make additional optimize. Because the lpm function code is the best way to fit the structure of device, which is designed by altera factory specialist who is very familiar with our device structure. (參考譯文:可以使用軟件里的 megawizard(lpm_counter)來生成計數(shù)器 , 選擇帶有 VHDL 的輸出語言 . 這應(yīng)該是實現(xiàn)計數(shù)器的有效方法 , 而且不用進行額外的優(yōu)化 . 因為 lpm 功能代碼最適合此設(shè)計結(jié)構(gòu) , 這種結(jié)構(gòu)是非常熟悉我們的設(shè)計結(jié)構(gòu)的 altera 專家設(shè)計的 . ) 39. 一般情況下用 Synplify Pro 綜合后生成的 edf 文件經(jīng) MP2 編譯后與用 MP2 綜合及編譯相比較 , 占用資源較少 , 但在使用層次化設(shè)計中 , 使用 Synplify Pro綜合頂層文件后得到的 edf 文件經(jīng) MP2 編譯后與用 MP2 綜合 及編譯該頂層文件相比較卻大大的占用資源 , 請問 , 在使用 Synplify Pro 綜合層次化設(shè)計中如何才能節(jié)省資源? 答:在使用軟件做優(yōu)化時存在這樣一個平衡關(guān)系 : 資源利用率與速度的平衡 . 資源利用率提高了 , 也就是節(jié)省了資源 , 但整個設(shè)計的性能可能會降低了 . 同樣盡力去優(yōu)化系統(tǒng)性能 , 提高速度 , 那資源的利用也可能會增加 . 當在使用層次化設(shè)計中 , 如何來優(yōu)化整體設(shè)計 , 最關(guān)鍵的就是層次與模塊的劃分 . 在劃分層次和模塊是有幾點建議 : 1)以功能來劃分 。功能模塊與層次的設(shè)計可以幫助你清楚的定 義邊界 , 在模塊框圖中 , Data paths、 tristate signals、 state machines、 register blocks、 large macrofunctions、 memory elements、 control blocks 和一些重復(fù)使用的模塊都具有其本身的自然邊界 . 2)劃分模塊時要盡量減少模塊間的 IO連接 , 過多的 IO 接口會使系統(tǒng)變得復(fù)雜 , 軟件需要交叉布線 , 降低性能和提高資源利用 . 3)在可能的情況下 , 盡可能多的給模塊的輸出加 Resister. 盡可能地優(yōu)化模塊的 劃分與接口 , 是提高層次化設(shè)計性能的關(guān)鍵 . 更詳細的方法與建議 , 可以參照我們的應(yīng)用文檔AN101. 40. 以前的問題提到 , 用 EPM7064LC68 進行編譯 , 會出現(xiàn)編譯錯誤 . 如果編譯時 , 讓系統(tǒng)自動選擇器件 , 則選中的器件是 EPM7064SLC84, 編譯通過 . 我查遍手頭的資料 , 并沒有發(fā)現(xiàn)后者有三個輸出使能 , 這是怎么回事?望解答 . 答:事實上在 MAX7000S 上有 6 個輸出使能控制信號 , 你可以在 MAX7000 的數(shù)據(jù)手冊(M7000. PDF)第二頁看到有這樣的說明 . Enhanced features available in MAX 7000E and MAX 7000S devices – Six pin or logicdriven output enable signals 41. 在 FPGA中是以何種形式實現(xiàn) VHDL 的變量類型的? 答: There is no definite answer to this. It depends on how you write your codes. A variable in vhdl may be synthesized into a physical , or it may not exist at all in the resulting circuit. 文:沒有明確的答案 . 它取決于所編寫的代碼 . Vhdl 中的變量可能同步到物理網(wǎng)絡(luò)中 , 或者根本不可能存在于結(jié)果電路中 . ) 42. 在布線后生成的時序報告文件中 , 可以看到延時的一些報告 , 對于某條時序報告 , 如何定位其對應(yīng)的語句呢?特別是當完全使用語言方式輸入時 , 生成的網(wǎng)表中大量的為N**形式 , 無法看懂其含義 . 答: Most synthesizers do preserve signal names to a certain extend, usually a string is concatenated to the end of the original name. So you can still correlate the names in many cases. For those strange names like N***, they are signals generated by the synthesizer and may not have a counterpart in the original source code. (參考譯文:大多數(shù)合成器是會以某種擴展名來保存信號名稱 , 這些擴展名通常是連接到最初的名稱末尾的字符串 . 使這些名稱在很多情況下仍然相關(guān) . 至于那些像 N***一樣奇怪的網(wǎng)表名稱 , 是由合成器生成的信號 , 而且可能不會在最初的源代碼中有副本 . ) 43. 布線后時序仿真與實際電路板上測試一般都不一樣 , 特別對于高速信號 , 幾個 ns的差別是很大的 , 到底應(yīng)該以哪一個為標準進行設(shè)計呢? 答: The timing information you get from the postlayout simulation is based on worst case parameter. So you usually have better results on silicon than in simulation. For robust designs, always consider the worst case. (參考譯文:從時序仿真中獲得的時序信息是基于最壞情況參數(shù)的 . 因此 , 通常在硅片上實際操作的結(jié)果要比仿真中的好 . 對于可靠的設(shè)計而言 , 始終都要考慮最壞的情況 . ) 44. ISE4. 2 和 ISE4. 1 相比有 何改進 ? 答: Here39。s a brief list of new features in ISE4. 2i (以下是 ISE4. 2i新特性的要點) Device support for VirtexII Pro and CoolRunnerII (設(shè)備支持 VirtexII Pro 和 CoolRunnerII) Provides 2 new source types, BMM files and ELF files, for embedded VirtexI