在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1881|回复: 8

请教一个超级菜的问题

[复制链接]
发表于 2008-4-25 09:21:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
请教: if (a == 1) b 产生一个时钟周期的脉冲;
            else  b=0;

菜鸟我用这种代码,但是不行,请高人指点
//a是input
reg b;
always @(posedge clk or negedge rst_x)
begin
if(~rst_x) b<=0;
else b<=a;
end

always @(posedge clk or negedge rst_x)
begin
if(~rst_x) b<=0;
else if(b==1) b<=0;
end

诚心请教!
发表于 2008-4-25 09:53:18 | 显示全部楼层
用一个always块写就可以了,你放在两个always块里,这样是不可以的,同一个变量不能在两个always块里同时赋值
 楼主| 发表于 2008-4-25 10:14:15 | 显示全部楼层
回楼上的 大款:

但是我这样写的话
always @(posedge clk or nedge rst_x)
begin
if(~rst_x) b<=0;
else
if(a==1) b<=1;
end

这样的话岂不是只要a=1,b就会一直为 1? 但是我希望的只是一个时钟周期的 b=1;
请教
发表于 2008-4-25 10:31:48 | 显示全部楼层
always @(posedge clk or nedge rst_x)
begin
if(~rst_x) b<=0;
else if(a==1) b<=1;
else b<=0;
end
这样就行了,b只要一个周期,是要看输入信号a的,如果a是一个周期的,在满足同步输入的情况下,就可以了
上面的代码翻译成中文是:有个寄存器,它是异步下降沿复位的,时钟是clk,
所以只要异步复位,b就成0,这个跟时钟无关。
如果a为1了,b就也为1,这里的a只要满足被clk采样到一次,b就永远为1了,因为是寄存器嘛!
所以下面加一句,只要a不是为1,也不复位,这个寄存器就输出0,
语言是描述行为的!!!!

[ 本帖最后由 loveineda 于 2008-4-25 10:32 编辑 ]
 楼主| 发表于 2008-4-25 11:05:45 | 显示全部楼层
很有道理,多谢指点,
但是情况是 a 会持续较长时间的 1, 绝对多于一个周期。

希望的效果是 当 a =1 时,b 产生一个周期的 1;如果按照
always @(posedge clk or nedge rst_x)
begin
if(~rst_x) b<=0;
else if(a==1) b<=1;
else b<=0;
end

b会持续和a一样时长的1,不是吗?
请教
发表于 2008-4-25 14:38:55 | 显示全部楼层
不是的,b的长度只和clk的周期有关的,关键看信号a能被clk采样到几次,采到几次,b就是几个周期的长度(同步电路!!!!!!)!!b的宽度只与
自己的时钟有关系,再是看采样次数,跟a的宽度没什么必然联系!假如a很窄,却很幸运的被clk采到一次,b也将维持一个周期的宽度!

还有,如果a很长很长,而b却一定只要一个周期的clk的宽度,方法还是有的,《verilog 高级数字设计》Michael D.Ciletti-电子工业出版社
中文翻译版的459页就介绍了一种方法,就是a信号b信号宽很多,而b信号只有一个clk周期的宽度!!
顺便说一下,做FPGA,学verilog,上面我所说的这本书应该要必备!!!!!
我收集FPGA设计和HDL语言的书几近“无数”,国内的“叫兽”写的书无一可以与之匹敌的!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!
而且它是在实践中教你学会Verilog的,太牛了,你看看。认真看完,以后你就可以在这个论坛教其他人了!!!!

[ 本帖最后由 loveineda 于 2008-4-25 14:42 编辑 ]
 楼主| 发表于 2008-4-25 15:52:11 | 显示全部楼层
非常感谢!!!!
发表于 2008-4-25 17:34:58 | 显示全部楼层

回楼主

你可以用时钟去采信号a的上升沿,这样b就只会持续1个clk周期了
发表于 2008-4-26 15:18:41 | 显示全部楼层
不要把verilog想成c,要结合电路想
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-12 14:57 , Processed in 0.031185 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表