完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
第一次发帖,请大家多多指教。 简单描述一下我的问题: CPLD采用外部时钟,频率50MHz;每隔200us发送一次CPLD的处理结果,该结果由AD转换结果经过编码组成,共40位(二进制)。 通过CPLD的一个I/O口发送该处理结果。空闲时发送1. 我的思路: 设置一个计数器counter, 采用for循环。 以下是草拟的程序:AD是输出,1位;AD_in是经过编码后的AD转换结果,40位;counter是计数器,i是for循环控制变量。 当counter<40的时候发送数据,每个时钟周期发送一位,发送40位之后循环结束,进入空闲状态,输出结果恒为1. always @(posedge clk or negedge rst) begin if(rst==1'b0) begin counter<=1'b0; end else begin if(counter<16'h1388) begin counter<=counter+1'b1; end else begin counter<=1'b0; end end end //计数,每隔200us进行一次AD转换,counter起到计数器的作用。接收AD转换的数据进行编码,完成之后进行发送。AD转换和转换结果编码的程序此处省略。下面是发送部分,也就是我的主要问题。 always @(posedge clk) begin if(counter<16'd40) begin for(i='d0;i<'d40;i=i+1) begin AD<=AD_in[i]; end end else begin AD<='b1; end end 我写verilog程序还没有用过for循环。向诸位大侠请教: 1. 这种每隔一个时钟周期发送一位的思路是否行得通? 2. 该程序有哪些问题?如何改进? 菜鸟初来乍到,请大家多多指教! |
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1452 浏览 1 评论
1246 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1454 浏览 0 评论
916 浏览 0 评论
2255 浏览 0 评论
1435 浏览 35 评论
5625 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 12:09 , Processed in 0.707782 second(s), Total 68, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号