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