首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Verilog的一个疑问

Verilog的一个疑问

reg[21:0] buffer;


always@(posedge clk)


begin


buffer=buffer+1;


if(buffer==22'b1111_11111111_11111111)


begin


ledout=~ledout;


end


end


想请问,,buffer=22'b1111_11111111_11111111后还继续+1么?


它会自动复位么?


 

╔☆→────────────────←☆╗
┊寻觅在电子中, , , 寻求适合自己的一席┊┊┊┊
┊也许生活本忙碌,  想享受安逸只能是心态了吧┊
╚☆→────────────────←☆╝      &
会继续加
美梦成真-->噩梦降临!
那么加到什么时候呢?
加到22位么?
之后会溢出吗?还是会自动变回0
╔☆→────────────────←☆╗
┊寻觅在电子中, , , 寻求适合自己的一席┊┊┊┊
┊也许生活本忙碌,  想享受安逸只能是心态了吧┊
╚☆→────────────────←☆╝      &
不停的加,你要说溢出也可以这么说,溢出后不就是0吗?
你要是不放心,在begin里面加上一句:
buffer==22'b0000_00000000_00000000;
这个和你不加的效果一样;

[此贴子已经被stone133于2006-6-5 18:27:45编辑过]

美梦成真-->噩梦降临!

还有一个疑问:
外部晶振是11.0592M
ledout是0.5s被取反一次,,
想请问这个0.5s是怎样算出来的呢?

 

20'b1111_11111111_11111111=1048575

22'b111111_11111111_11111111=4194303

[此贴子已经被作者于2006-6-6 11:26:27编辑过]

╔☆→────────────────←☆╗
┊寻觅在电子中, , , 寻求适合自己的一席┊┊┊┊
┊也许生活本忙碌,  想享受安逸只能是心态了吧┊
╚☆→────────────────←☆╝      &

原来如此,就是说,verilog可以自动清零的

 

其实我就是不清楚,是不是VHDL和verilog一样都会溢出就清零,不用人为来干预了

[此贴子已经被作者于2006-6-6 15:31:53编辑过]

╔☆→────────────────←☆╗
┊寻觅在电子中, , , 寻求适合自己的一席┊┊┊┊
┊也许生活本忙碌,  想享受安逸只能是心态了吧┊
╚☆→────────────────←☆╝      &
4194303个11.0592M的时钟周期=0.379秒;
ledout是0.5s被取反一次?应该是0.379秒吧?
美梦成真-->噩梦降临!
我就觉得奇怪,程序说是0.5s取反的
把ledout接上发光二级管,测得也是0.5s
应该没错把,
所以就不明白怎样算出来的?

选一个合适的计数器是什么意思?
╔☆→────────────────←☆╗
┊寻觅在电子中, , , 寻求适合自己的一席┊┊┊┊
┊也许生活本忙碌,  想享受安逸只能是心态了吧┊
╚☆→────────────────←☆╝      &
1。20'b1111_11111111_11111111=1048575是做什么的,怎么在你的程序里面没见到?
2。选一个合适的计数器的意思就是得到一个合适的计数值,这个值保证你得到一个合适的时间;


美梦成真-->噩梦降临!
if(buffer==22'b1111_11111111_11111111)

这里就是20个1,而22个1是它的最大值

[此贴子已经被作者于2006-6-8 12:16:21编辑过]

╔☆→────────────────←☆╗
┊寻觅在电子中, , , 寻求适合自己的一席┊┊┊┊
┊也许生活本忙碌,  想享受安逸只能是心态了吧┊
╚☆→────────────────←☆╝      &
不明白怎么算出来的
╔☆→────────────────←☆╗
┊寻觅在电子中, , , 寻求适合自己的一席┊┊┊┊
┊也许生活本忙碌,  想享受安逸只能是心态了吧┊
╚☆→────────────────←☆╝      &
原来算法是没错的,,,,,
算出的结果也没错

是它说0.5s错了
我当时用示波器看时,0.5s太闪了,看得不是很清楚,以为也是0.5s
应该是算出的结果才对

因为我试过看10ms和20ms时,
结果与算出来的一样
╔☆→────────────────←☆╗
┊寻觅在电子中, , , 寻求适合自己的一席┊┊┊┊
┊也许生活本忙碌,  想享受安逸只能是心态了吧┊
╚☆→────────────────←☆╝      &
027-12345678
你这段程序的延时实际上是0.35S,因为当你判断到buffer"b'11111111111111111111
的时候没有对buffer清0,所以到下一次再符合buffer"b'11111111111111111111的时候,就相当于进行了4194304次计数(22位宽的二进制计数器),4194304×0.083uS=0.35S
多谢指点~~~~
╔☆→────────────────←☆╗
┊寻觅在电子中, , , 寻求适合自己的一席┊┊┊┊
┊也许生活本忙碌,  想享受安逸只能是心态了吧┊
╚☆→────────────────←☆╝      &
返回列表