完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 laihuadewuyu 于 2013-10-12 12:22 编辑
在用verilog hdl 编写代码的时候,为了得到一个上升沿突变信号,我这样处理的 always @ (posedge clk) begin sig_out=1‘b0; sig_out=1’b1; end 这样写有效果吗???? |
|
相关推荐
8个回答
|
|
|
|
|
|
不是为了仿真,是为了触发外围的一个芯片,需要一个由低到高的突变信号,我那样写达不到效果吗
|
|
|
|
实在要这样的话,个人意见加个复位信号,用个计数器计数,这样所需脉冲的宽度、触发时间都可控,
简单的例如: always @(posedge clk or negedge rst) begin if(!rst) cnt<=2'd0; else if(cnt==2'd2) cnt<=2'd2; else cnt<=cnt+1'b1; end 后面再写个case语句,cnt等于0,d_out为0;cnt等于1,d_out为1;cnt等于2,d_out为2。 |
|
|
|
上面的后面写错了,是cnt等于2,d_out为0;
|
|
|
|
明显不可以啊,可以这样写啊
reg [1:0] cnt; always (posedge clk or negedge rst) begin if (!rst) begin sig_out <=0; cnt <=2'b0; end else begin if(cnt == 2'b10) begin sig_out <=~sig_out; cnt <=2'b0; end else begin cnt <= cnt +2'b1; end end |
|
|
|
楼主的设计是错误的,你所设计,生成的是时序逻辑,不可以使用阻塞赋值。
|
|
|
|
取反啊 sig_out=~sig_out
|
|
|
|
不知道楼主说的不是太清楚,突变信号是电平呢,还是脉冲?最简单的处理方法:
always@(posedge clk) if(!rst)begin cnt <= 0; pulseRst <= 0; end else begin cnt <= (cnt >5)?cnt:(cnt+1); pulseRst <= (cnt >2)?1:0; end 以上给出的是一个上升沿电平信号;如果需要的是正脉冲,则只需要将“ pulseRst <= (cnt >2)?1:0;”改为“ pulseRst <=( (cnt >2)&&(cnt<4))?1:0;”即可。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1520 浏览 1 评论
助力AIoT应用:在米尔FPGA开发板上实现Tiny YOLO V4
1073 浏览 0 评论
2600 浏览 1 评论
2287 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
2559 浏览 0 评论
2025 浏览 55 评论
6037 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 11:04 , Processed in 0.687703 second(s), Total 83, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号