亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版

標題: 終于把一個簡單的時序調通了~ [打印本頁]

作者: liuyang    時間: 2012-12-20 02:07
標題: 終于把一個簡單的時序調通了~
    作為一個初學者,沒有很好的c語言基礎,c51也玩得很初級,數字電路也學得很一般,現在面對fpga的一些簡單應用的時候真的是磕磕碰碰。 verilog的調試比起軟件編程來的確困難很多。雖然基本上沒有軟件編程經驗,不過印象當中,調單片機程序的話只要找個順手的EDA工具,把需要觀察的量拉出來一步步執行程序就可以找出來問題出在哪里了。 可惜verilog這樣的東西完全不能用軟件的思想去理解他,調試起來更是困難重重。 感覺上modulesim其實可以模擬著做一些單步的調試,不過沒有去怎么深究和學習(而且,貌似某些需要用到的參數申明必須放在前面,不然quartus里運行沒有問題的程序在modulesim里會報錯的。 初學到現在,基本上都是人腦仿真以及直接看最終波形。。。
   前天寫了一段對于一般上手的人來說小菜一碟的A/D驅動時序 。 因為之前寫過ccd的驅動時序,看懂datasheet以后感覺寫這個問題不大。寫完了,bebug了幾個語法錯誤,然后程序就編譯成功了。 信心滿滿的寫了個testbench 然后放modulesim上一跑, 結果,波形很奇葩。 之前學的時候,只是跑跑教程給的例子,所以沒注意warning里的內容,最終的結果就是完全無頭蒼蠅一樣的找了半天錯,沒找出來。 其中,想象到了各種自以為是的硬件實現上面的原因,以為計數器的寫法上面除了問題,改了半天沒有任何結果。狀態機也查了半天,也沒有任何結果。看著波形 ,終于發現好像是某個狀態以后馬上跳到idle狀態所導致的問題。于是又試了半天,發現的確如此。很自然的就想到是因為狀態變量轉換的時候跑飛到未定義的狀態所導致的,如果這樣的話,唯一的可能就是寫得程序有問題了,可是改來改去,完全沒有效果。 要知道,這么折騰著半天,用所有自己能想到的方面去修改以后還沒有成功的話,人的三觀絕對會碎上一地的。。。  奔潰了。準備刷牙去的時候,突然發現,我艸,用于寄存狀態reg我給的時4位的,而實際定義的時8位的熱獨碼,這狀態根本挑不過去啊!   突然一爽。  刷牙回來以后,重新看了下warning里是不是有什么警告,結果,的確有,不過英文不好,如果不是因為知道是什么原因,直接看也不一定能看出什么端倪來。       
    可是第二天,問題又來了,功能仿真完全沒有問題,可是一用modulesim提供的時序仿真,確是各種錯誤,然后三觀又開始各種扭曲了。各種懷疑,懷疑是modulesim提供的后仿真是不是有什么問題,是不是需要設置什么東西。懷疑是不是因為沒有進行時序約束導致。然后得出各種奇葩的解決方案。 當中各種糾結。  歸根到底,其實還是自己對無意中生成的latch所帶來的危害沒有深刻的認識吧。剛才把狀態機里各個reg的變化描述補充完整了,不再提示有latch生成以后再開后仿真一試, 哈,成功了。。。。                雖然還沒有深刻理解latch會對時序的實現帶來這么大的影響,不過, 也算得到了一些有用的東西,    coding style~ coding style~ coding style 很重要啊





歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1