完善资料让更多小伙伴认识你,还能领取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. 该程序有哪些问题?如何改进? 菜鸟初来乍到,请大家多多指教! |
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
求FPGA 驱动控制ltc2271 或者 ltc2180 或者 ltc2190或者 ltc2202 的代码
1081 浏览 0 评论
378 浏览 0 评论
求助:遇见诡异问题,FPGA模块A输出端口连接模块B输入后,模块A不能正常工作的
1243 浏览 1 评论
430 浏览 0 评论
1194 浏览 1 评论
4108 浏览 92 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-10 13:18 , Processed in 0.536991 second(s), Total 68, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191