作者syuan08 (syuan)
看板Electronics
標題[問題] 不同信號輸入counter10b
時間Wed Dec 9 19:02:53 2015
想請問各位大大,小弟目前在設計電路的時候碰到了一些問題!所以想要請教一下各位!
我要設計一個10bit計數器,再經由64MHz與freqin當作輸入!
如果freqin為1MHz時,計數器所產生的值應該為10b'00010_00000 = 64
如果freqin為500KHz時,計數器所產生的值應該為10b'00100_00000 = 128
如果為400KHz?350KHz?
因為freq會隨時變更,所以電路設計上不知道該如何設計,計數到對應的值時就清除!
由於輸入訊號可能不穩定,可能還需要加入濾波器!
小弟自行有寫了一段程式碼,想請各位幫忙看看該怎麼做改進!
程式碼
module counter10b(clk, count, reset , freqin); // synchronous 10-bit counter
input clk,reset;
output [9:0] count;
input freqin;
reg [9:0] count_temp = 10'b00000_00000; // temp register for internal
reg [9:0] count = 10'b00000_00000; // initial count=0
always @(posedge clk or negedge reset )
begin
if (~reset)
count_temp <= 10'b00000_00000;
else
count_temp <= count_temp +1'b1;
end
always @(posedge freqin) // latch on rising edge
begin
count <= count_temp; // latch the count_temp
end
endmodule
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 163.18.104.56
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Electronics/M.1449658975.A.2A5.html
1F:推 websterskimo: 用 FSM 可以處理 freqin 為 variable 12/10 22:23
2F:→ websterskimo: 例如3個狀態 S_idle、S_cnt_1、S_cnt_0 12/10 22:24
3F:→ websterskimo: S_idle等freqin=1會跳到S_cnt_1 12/10 22:24
4F:→ websterskimo: S_cnt_1等freqin=0會跳到S_cnt_0 12/10 22:25
5F:→ websterskimo: S_cnt_0等下個freqin=1會跳回S_cnt_1 12/10 22:26
6F:→ websterskimo: 類似這樣子的方式就可FSM+Counter得到你要的結果 12/10 22:26
7F:→ websterskimo: 補充,S_cnt_1、S_cnt_0的cnt會累加 12/10 22:28
8F:→ websterskimo: S_cnt_0 回 S_cnt_1 時 cnt 清掉 12/10 22:28
請問大大,可以提供相關的程式碼嘛?
※ 編輯: syuan08 (218.173.56.128), 12/11/2015 01:31:43
9F:推 xanter: 可以畫一下Timing diagram嗎?不太能理解你的freqin 12/14 19:29
10F:→ xanter: 是週期訊號?還是單純一段pulse? 12/14 19:30
補上示意圖
https://www.imageshack.us/i/hlwqsyWFj
圖中的500K會隨意更動
EX:400K?300K?
※ 編輯: syuan08 (163.18.104.56), 12/14/2015 20:22:06
12F:推 xanter: 剛剛改了一下覺得這樣比較合理? 12/14 23:56
14F:→ xanter: freqin先與clk同步過後再計數?不知道你是不是要這樣的結 12/14 23:57
15F:→ xanter: 果? 12/14 23:57
看起來是沒錯!
要將輸出的128鎖住,不然在計數的過程中我怕頻率會飄
如果輸入200K!輸出為256嗎?
因為我目前也是使用pulse來計數,不過在FPGA上會產生multiple drivers的問題
頻率有點不對...
http://imgur.com/js9ULeM
所以可否提供相關程式碼做為參考?(可寄信)
感謝~
※ 編輯: syuan08 (114.47.147.219), 12/15/2015 00:44:15
※ 編輯: syuan08 (114.47.147.219), 12/15/2015 00:53:31
17F:→ xanter: 剛剛趁空檔寫的,沒有run過,不過應該可以,你試試看 12/15 10:19