完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这里例子也有点太简单了吧,书上一般都会有的
|
|
|
|
谢谢分享。
|
|
|
|
楼主,那么能不能让我请教一下,这个问题搞了我很久了
本人最近在学习verilog,,看《verilog数字设计与综合》第二版的14.7节时,分析代码,觉得有想不通的地方,就来请教一下了。书上代码先贴上: 这是整个问题的网址:http://andrew810810.blog.163.com ... 763992007895125290/ 以下是一部分代码: //用有限状态机的办法,设计报纸售卖机的投币器 module vend(coin,clock,reset,newspaper); //声明输入输出端口 input [1:0] coin; input clock; input reset; output newspaper; wire newspaper; //声明有限状态机的内部状态 wire [1:0] NEXT_STATE; reg [1:0] RES_STATE; //状态编码 parameter s0=2'b00; parameter s5=2'b01; parameter s10=2'b10; parameter s15=2'b11; //组合逻辑 function [2:0] fsm; input [1:0] fsm_coin; input [1:0] fsm_PRES_STATE; reg fsm_newspaper; reg [1:0] fsm_NEXT_STATE; begin case (fsm_PRES_STATE) S0: //状态为s0 begin if(fsm_coin==2'b10) begin fsm_newspaper=1'b0; fsm_NEXT_STATE=s10; end else if (fsm_coin==2'b01) begin fsm_newspaper=1'b0; fsm_NEXT_STATE=s5; end else begin fsm_newspaper=1'b0; fsm_NEXT_STATE=s0; end end s5: //状态为s5 begin if(fsm_coin==2'b10) fsm_newspaper=1'b0; fsm_NEXT_STATE=s15; end else if(fsm_coin==2'b01) begin fsm_newspaper=1'b0; fsm_NEXT_STATE=s10; end else begin fsm_newspaper=1'b0; fsm_NEXT_STATE=s5; end end s10: //状态为s10 begin if(fsm_coin==2'b10) begin fsm_newspaper=1'b0; fsm_NEXT_STATE=s15; end else if (fsm_coin==2'b01) begin fsm_newspaper=1'b0; fsm_NEXT_STATE=s15; end else begin fsm_newspaper=1'b0; fsm_NEXT_STATE=s10; end end s15: // 状态为s15 begin fsm_newspaper=1'b1; fsm_NEXT_STATE=s0; end endcase fsm={fsm_newspaper,fsm_NEXT_STATE}; end endfunction //每当硬币放入或当前状态改变时,组合逻辑动作 assign {newspaper,NEXT_STATE}=fsm(coin,PRES_STATE); //用同步复位、时钟正跳变沿触发的状态触发器 always @(posedge clock) begin if(reset==1'b1)  RES_STATE<=S0; else  RES_STATE<=NEXT_STATE; end endmodule 我的疑问在于这里: //每当硬币放入或当前状态改变时,组合逻辑动作 assign {newspaper,NEXT_STATE}=fsm(coin,PRES_STATE); 就是上面这一句我感到不理解。结合问题,如果我在时钟第一个下降沿改变coin(例如投个5分的硬币),那么将触发这个assign语句,从而调用函数,使NEXT_STATE变为s5状态;下降沿后是第一个上升沿,又触发语句“PRES_STATE<=NEXT_STATE;”那么PRES_STATE也变为s5状态,那么不是再一次触发了assign语句吗,而且此时coin还是2‘b01(因为题目说coin值保持一个时钟周期)。这么的一个时钟周期内两次触发assgin语句,不是造成错误结果吗? |
|
|
|
谢谢分享!
|
|
|
|
只有小组成员才能发言,加入小组>>
2883 浏览 3 评论
27666 浏览 2 评论
3458 浏览 2 评论
3975 浏览 4 评论
基于采用FPGA控制MV-D1024E系列相机的图像采集系统设计
2319 浏览 3 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 06:07 , Processed in 2.058800 second(s), Total 84, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号