完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我就不拿出完整的程序了,只给出一部分。完整的程序请见附件!功能实现:想写TCD1500C芯片的一路采样保持脉冲
时序图如下: 转移信号(SH),时钟信号(第二路脉冲),复位脉冲RS,再就是最后一路脉冲SP(图上是倒数第二路) 在写的过程中总有点问题: 现在看下面这一段程序; 想让clear为1时,立即执行第二个always语句中的else if(count6>=33 && count6<38)语句,这样才能使SP与RS脉冲匹配。(SP的下降沿与RS的上升沿对应)我不知道怎么改一下!希望能给点帮助! reg【9:0】 count6; initial begin count6=0;end //-----------------------------SP脉冲 1MHz 高电平100ns 低电平 900ns ------------------------------------- output reg [19:0] count7; reg clear; always @(negedge clk_50M or negedge rst_n) begin if(!rst_n) begin count7 <= 1'b0; clear <= 1'b0; end else if(count7==20'd600031) //count7计数到600031时使clear为1,然后想马上执行下一个always语句的else if(count6>=33 && count6<38)及后面的语句 begin clear <= 1'b1; count7 <= 1'b0; end else begin count7 <= count7 + 1'b1; clear <= 1'b0; end end always @(negedge clk_50M or posedge clear) begin if(clear) count6 <= 33; else if(count6>=0 && count6<33)//我能明白这里clear为1时 count6 = 33此时会 //跳出,一个周期后才执行下面这个else if 语 //句,不知道怎么改一下 begin SP <= 1'b0; count6 <= count6 + 1'b1; end else if(count6>=33 && count6<38) begin SP <= 1'b1; count6 <= count6 + 1'b1; end else if(count6>=38 && count6<83) begin SP <= 1'b0; count6 <= count6 + 1'b1; end else if (count6>=83 && count6<88) begin SP <= 1'b1; count6 <= count6 + 1'b1; end else if (count6>=88 && count6<283) begin SP <= 1'b0; count6 <= count6 + 1'b1; end else if(count6>=283 && count6<288) begin SP <= 1'b1; count6 <= count6 + 1'b1; end else if(count6>=288 && count6<332) begin SP <= 1'b0; count6 <= count6 + 1'b1; end else if (count6 == 332) count6 <= 283; else count6 <= count6 + 1'b1; end |
|
相关推荐
3个回答
|
|
本帖最后由 shakenbaby216 于 2014-12-25 13:32 编辑
很简单,这是一个有限状态机,你怕clear耽误一个周期,就把clear状态当做下一个转换状态的一部分来操作。 if(clear) begin count6 <= 34; SP <= 1'b1; end 这样不就提前得到输出,下一周期count6=34状态正常跳转。 另外,第二个alway是一个典型的摩尔状态机,使用>和<作为判断条件非常耗费资源,且毫无必要。较好的编码风格应当定义一个state信号量,count6计数器=某值 作为state跳转条件,然后使用state作为sp输出动作的判断条件。这样综合后面积估计只有你程序的1/10。
最佳答案
|
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-18 02:06 , Processed in 0.640658 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号