|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
再問verilog? always的觸發(fā)事件?急????/ |
| 作者:wag 欄目:EDA技術 |
always @(posedge sign_t or negedge sel_t) begin if(!sel_t) begin coun=TEMP;TEMP=0;end else TEMP=TEMP+1; end 就上面一點東西,我想在sign_t的高電平記數(shù)。在sel_t的下降沿停止記數(shù)?墒俏以贛AX-PLUS下仿真看到coun在很快就結束了,我不理解,我只在下降沿才觸發(fā),怎么下降沿還沒有到就把coun改變了呢????????????? |
| 2樓: | >>參與討論 |
| 作者: littleou 于 2005/1/7 15:33:00 發(fā)布:
好好學習一下verilog HDL吧 這種寫法是不被接受的 |
|
| 3樓: | >>參與討論 |
| 作者: lotuson 于 2005/1/7 15:54:00 發(fā)布:
你把‘or negedge sel_t’去掉試一試 |
|
| 4樓: | >>參與討論 |
| 作者: wag 于 2005/1/7 17:20:00 發(fā)布:
去掉,肯定不行?因為就是要檢測下降沿。 請問,這種寫法錯在哪兒?我想設計成異步復位方式。always@(posedge clk or negedge reset),請高人指教!!!!!!!!!!!!!!!!!! |
|
| 5樓: | >>參與討論 |
| 作者: nj21ic 于 2005/1/7 17:57:00 發(fā)布:
use reg <= is the best!!! use reg <= is the best!!! |
|
| 6樓: | >>參與討論 |
| 作者: xjg1111 于 2005/1/7 18:58:00 發(fā)布:
re 樓主的語法應該雖然是沒有錯誤的, 但“我想在sign_t的高電平記數(shù)。在sel_t的下降沿停止記數(shù)” 這種要求是不是不合理的?你想想~~~sign_t,sel_t都是控制信號,時鐘是什么?? 你的要求明確了代碼應該很好寫~~ always @(posedge sign_t or negedge sel_t)這種格式一般用于異步復位或置位的的形式。 還有,最好用非阻塞觸發(fā)的格式編碼~~“ <= ” |
|
| 7樓: | >>參與討論 |
| 作者: wag 于 2005/1/8 9:14:00 發(fā)布:
謝謝,大家的幫助。! 使用<=付值不行,我設計的本意是這樣的,sign_t是一個一個的脈沖信號,而sel_t是一個在sign_t有脈沖時的一個高電平信號,我想在sel_t為高電平的時候對sign_t記數(shù)它的脈沖個數(shù)。 sel_t __________|----------|__________ sign_t __________|-|_|-|_|-|___________ 就是這樣的信號 |
|
| 8樓: | >>參與討論 |
| 作者: xjg1111 于 2005/1/8 9:51:00 發(fā)布:
re 如果有你有一個全局時鐘(當然比sign_t的步率要高,2倍以上),那樣的話實現(xiàn)起來很容易,也符合同步設計的思想。 如果沒有的話,那只能以sign_t為時鐘進行計數(shù),用sel_t作為使能端。代碼應該很好寫。不要要看你什么時候將這個計數(shù)值讀走~~~ * - 本貼最后修改時間:2005-1-8 9:54:55 修改者:xjg1111 |
|
| 9樓: | >>參與討論 |
| 作者: wag 于 2005/1/8 11:18:00 發(fā)布:
我也一直認為很簡單,但是就是搞不定???????? |
|
| 10樓: | >>參與討論 |
| 作者: xjg1111 于 2005/1/8 14:14:00 發(fā)布:
re 呵呵,其實你的要求還不是很明確, 對于這個計數(shù)值,你想怎么輸出?在什么時候讀。 sel_t信號一變低就不計數(shù)了,一直輸出計數(shù)值?還是這個信號本身就會比計數(shù)脈沖持續(xù)的時間要長,在它變低前已經(jīng)把數(shù)據(jù)讀走了?一變低就把計數(shù)值清0. 這些都需要明確,另外做出的程序符號自己的時序要求即可。 |
|
| 11樓: | >>參與討論 |
| 作者: wag 于 2005/1/8 15:04:00 發(fā)布:
謝謝xjg1111。。。。! sign_t信號有脈沖的時候和sel_t為高電平是一樣寬的,其實本來不需要sel_t信號的,我為了記數(shù)方便想引入的一個信號,設計的主要目的是對一個連續(xù)不斷的sign_t脈沖信號記數(shù),而sign_t信號的特點是:一會有脈沖,一會是一直的低電平,但是脈沖的個數(shù)是不同的.sign_t就是這樣一個變化而連續(xù)的信號。 sign_t:__________|-|_|-|_|-|___________|-|_|_______|-|_|-|_____ 我引入sel_t就是在sign_t為高電平的時候set_t也是高,這樣在sel_t的上升沿開始記數(shù),在sel_t的下降沿停止記數(shù)并把數(shù)據(jù)(記數(shù)脈沖個數(shù)讀走),同時計數(shù)器清零等待下一次的開始。 |
|
| 12樓: | >>參與討論 |
| 作者: xjg1111 于 2005/1/8 16:59:00 發(fā)布:
那這樣就容易了~~~ reg [n:0] coun;//n為你所需要的位寬 always @(posedge sign_t or negedge sel_t) begin if(!sel_t) coun<=0; else coun<=coun+1; end con就為輸出,這樣你必段在sel_t變低前把coun讀走就行了,否則讀出的是0 |
|
| 13樓: | >>參與討論 |
| 作者: xjg1111 于 2005/1/8 17:02:00 發(fā)布:
re 如果你有一個高速的全局時鐘的話,最好采用一個時鐘的同步設計, 通過檢測sign_t的上升沿來實現(xiàn)計數(shù)。 當實如果你用CPLD,這樣應該能實現(xiàn)的了。 |
|
| 14樓: | >>參與討論 |
| 作者: wag 于 2005/1/8 17:08:00 發(fā)布:
很謝謝xjg1111你!!!!!!! 我也想在sel_t變低前把coun讀走,但是我怎么知道哪個時候是它要變低呢?我覺得你的代碼和我的意思是一樣的(只是付值方式不一樣)。 |
|
| 15樓: | >>參與討論 |
| 作者: wag 于 2005/1/9 11:03:00 發(fā)布:
我已經(jīng)搞定,加一個變量,欺騙編譯器 |
|
| 16樓: | >>參與討論 |
| 作者: nj21ic 于 2005/1/9 20:29:00 發(fā)布:
老兄您竟然沒加變量. |
|
| 17樓: | >>參與討論 |
| 作者: wag 于 2005/1/10 16:29:00 發(fā)布:
怎么回沒有加呢?只是在加了一個不過這樣資源的耗用就多了! |
|
| 18樓: | >>參與討論 |
| 作者: 風間逝 于 2005/1/11 16:16:00 發(fā)布:
我的... always @(posedge sign_t or posedge sel_t) begin if(sel_t == 1) //檢查sel_t begin coun=TEMP; TEMP=0; end else TEMP=TEMP+1; //記數(shù) end //下面是我寫的模60的計數(shù)器,帶進位輸出和異步清0 MODULE M60Count (clk, clr, en, out, carry); input clk, clr, en; OUTPUT carry; OUTPUT [7:0]out; reg [7:0]Count; reg Carry; always @(posedge clk or posedge clr) begin if (clr == 1) begin Count = 0; end else begin Count = Count + 1; Carry = 0; if (Count == 60) begin Count = 0; Carry = 1; end end end endMODULE |
|
| 19樓: | >>參與討論 |
| 作者: xjg1111 于 2005/1/11 18:53:00 發(fā)布:
re 樓上的coding不好~ 為什么都喜歡用阻塞觸發(fā)? 同一塊中分時做這么多事兒~~~ * - 本貼最后修改時間:2005-1-11 19:32:08 修改者:xjg1111 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |