作者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/cn.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