完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,接触 Verilog 时间不长,遇到一个问题,真心求教。谢谢
背景:想把 AD 输出的 8 位并行数据在 CPLD 中进行并串转换,并在 DSP 提供的 串行时钟 CLKR1 和 帧同步(片选)信号 FSR1 的控制下,将串行数据经 DR1 引脚输出。 问题:综合能通过,但经过波形仿真,DR1 输出的数据总是不对。 代码如下: // module spi( output reg clk_ad, //SPI_1,方向:CPLD-->DSP output reg DR1, input FSR1, input CLKR1, input clk_in, input [7:0]data_in //AD输入cpld的8位数据 ); reg[4:0]temp; //add reg[7:0]data_to_dsp; //用于数据缓存 reg[8:0]data_to_dspp; //AD的时钟由有源晶振4分频得到,10/4=2.5M always @(posedge clk_in) begin temp<=temp+1'd1; if(temp==1) begin clk_ad<=~clk_ad; temp<=0; end else clk_ad<=clk_ad; end //AD输入到CPLD的数据转移到寄存器data_to_dsp中 always @(posedge clk_ad) begin data_to_dsp<=data_in; end //CPLD到DSP的SPI实现(SPI1) always @(negedge CLKR1) begin if(!FSR1) begin data_to_dspp[8:0] <= {data_to_dsp[7:0],1'b0}; DR1 <= data_to_dspp[8]; end end endmodule |
|
相关推荐
4个回答
|
|
output reg DR1, 你给挪下来,别放上边
|
|
|
|
这样吗?
always @(negedge CLKR1) begin if(!FSR1) begin data_to_dspp[8:0] <= {data_to_dsp[7:0],1'b0}; // DR1 <= data_to_dspp[8]; end end always @(negedge CLKR1) begin if(!FSR1) begin //data_to_dspp[8:0] <= {data_to_dsp[7:0],1'b0}; DR1 <= data_to_dspp[8]; end end |
|
|
|
可以参考明德扬点拨FPGA基础视频,视频里有verilog的内容。
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1735 浏览 1 评论
1482 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1696 浏览 0 评论
949 浏览 0 评论
2486 浏览 0 评论
1522 浏览 38 评论
5777 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-1 11:41 , Processed in 0.586559 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号