完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
各位前辈,我有一个verilog代码,是实现在触发信号triggle_rising(检测triggle的上升沿)有效的时候,FPGA控制adc工作然后采集完1000个数据的时候,把数据存储在RAM中,然后通过RAM把数据传到另一块板子。但现在问题是下到板子上就“触发信号triggle_rising”FGPA检测不到,不知道问题出在那了,希望前辈帮我看看这个程序,看有什么地方需要改进的,指点一下,这是我写的代码,在FSM状态机的部分: module fsm( output [1:0] rw, //output triggle_rising, input spi_cs, input full, input triggle, input clk ); reg[1:0] state,next_state; parameter S0 = 2'b00, S1 = 2'b01, S2 = 2'b10, S3 = 2'b11; reg sync_cs1; reg sync_cs2; reg sync_triggle1; reg sync_triggle2; reg triggle_low; reg triggle_high; wire triggle_rising; //reg triggle_rising = 0; reg [1:0] rwR; assign triggle_rising = (triggle_low) && (!triggle_high); assign rw = rwR; always @(posedge clk) begin sync_cs1 <= spi_cs; sync_cs2 <= sync_cs1; sync_triggle1 <= triggle; sync_triggle2 <= sync_triggle1; triggle_low <= sync_triggle2; triggle_high <= triggle_low; // triggle_rising <= (triggle_low) && (!triggle_high); end always @(posedge clk) begin state <= next_state; end always @(state,full,sync_cs2,triggle_rising) begin rwR = 2'b00; next_state = S0; case(state) S0 : begin if(triggle_rising) next_state = S1; end S1 : begin rwR = 2'b01; if(full) next_state = S2; else next_state = S1; end S2 : begin next_state = S2; if(sync_cs2) next_state = S3; end S3 : begin rwR = 2'b10; if(full) next_state = S0; else next_state = S3; end endcase end endmodule 加上这个信号之后,就没有信号出来,就一直是‘1’,去掉之后就有数据出来,这到底是怎么回事啊?希望前辈们指点一下,谢谢了 |
|
相关推荐
|
|
你这状态机写的什么玩意?
always @(state,full,sync_cs2,triggle_rising) 为什么不用clk驱动状态机? |
|
|
|
|
|
|
|
|
|
|
|
别的不说,最好把 assign triggle_rising = (triggle_low) && (!triggle_high);改成assign triggle_rising = (triggle_low) & (!triggle_high);
|
|
|
|
|
|
如果triggle一直为长高或者常低,那就根本不可能有上升沿,建议看下triggle信号是否为脉冲信号。
再者,状态机写的是在太烂了,看都懒得看了,自己去找点状态机代码风格的书看看去。 |
|
|
|
|
|
|
|
|
|
|
|
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-29 04:17 , Processed in 0.660164 second(s), Total 83, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号