作者eecheng87 (EEcheng)
看板Electronics
標題[問題] verilog觀念和如何設計
時間Fri Apr 12 12:28:28 2019
各位好, 我想請教幾個觀念, 和一個設計verilog的想法
先問個觀念:
1. 一個module結束的時機在甚麼時候? 是output被賦值的瞬間嗎?
若是這樣, 那如果我設計一個pipeline(多個always@(posedge clk),
最後一個always block做output的給值) 那這樣不就在第一個clk的
時候output就會接到一個不知名的訊號然後結束嗎, 而不會等到真正
的值來?
2. 組合電路會和循序電路寫在同一個模組嗎? 如下
always@(posedge clk)begin
A區........
end
......在兩個block中間做一個組合電路
always@(posedge clk)begin
B區......
end
最後問一個關於怎麼設計的問題:
-- 我目前有一個變數fraction, 我想在每一次迭代中檢查fraction的最高
bit是否為1, 不是則<<, 並且進入下一次迭代
-- 目前架構:
always@(input1)begin
.....做些處理得到fraction
end
always@(......
....迭代處理fraction並決定輸出
.... end
-- 目前遇到的困難:
1. 輸入並沒有提供clock, 但是我嘗試在module裡面做一個clk, 但模擬
器就會報error. ( 我的clk: always#10 clk~=clk; )
若我沒有clock, 是否就無法迭代?
2. 無法確保把正確的值給輸出前, 下一個input訊號就來了, 還是我不需
管這個?
問題有點多, 先在這裡感謝各位的幫忙 ^^
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.112.53
※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1555043310.A.C31.html
推 tkhan: 一個module結束的時機在,你書念的不夠多 04/12 12:47
→ BellCranell: pipeline你應該要知道哪個時間的值是你要的.. 04/12 13:12
推 kramasdia: 先丟掉你軟體語言的包袱 module沒有結束的概念 它是一 04/12 16:23
→ kramasdia: 塊電路 04/12 16:23
推 DRQX: 請看邏輯設計/數位邏輯 的書 04/12 18:39
推 a12349221: 寒假報一下cic開的verilog課程吧,成大有開課 04/13 23:35
推 Neverfor: assign 跟 always比較一下 04/21 02:29
推 hihihihsuan: 1. module 是一塊電路,會一直存在著,你給了它什麼i 04/28 21:46
→ hihihihsuan: nput它就會輸出相應的結果 04/28 21:46
→ hihihihsuan: 2. 組合和循序邏輯可以分開也可以合在一起,不一定要 04/28 21:46
→ hihihihsuan: 分開寫,分開寫的話循序邏輯就只有把next值給到curre 04/28 21:46
→ hihihihsuan: nt值,組合邏輯寫你的function 04/28 21:46
→ hihihihsuan: 3. 要在一個clk做完的話,可以用if或case來判斷要shi 04/28 21:46
→ hihihihsuan: ft幾次才能讓MSB為1,不然就會產生combination loop 04/28 21:46