关于FPGA的触发问题,求解答
2016年09月07日 10:10 发布者:追梦人_电子设计
各位前辈,我有一个verilog代码,是实现在触发信号triggle_rising(检测triggle的上升沿)有效的时候,FPGA控制adc工作然后采集完1000个数据的时候,把数据存储在RAM中,然后通过RAM把数据传到另一块板子。但现在问题是下到板子上就“触发信号triggle_rising”FGPA检测不到,不知道问题出在那了,希望前辈帮我看看这个程序,看有什么地方需要改进的,指点一下,这是我写的代码,在FSM状态机的部分:module fsm(output rw,
//output triggle_rising,
input spi_cs,
input full,
input triggle,
input clk
);
reg 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 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. 一点小问题就卡住学习进程,浪费了宝贵的学习时间?!! 2. 花了大量时间自学,学了一大堆,却不知道有没有用?!!3.能看懂别人的代码,到自己设计时却不知道先从哪里下手?!!4.找不到工作,面试难?!!看别人有10K+薪水,而自己只有几K?!!不要犹豫了,赶紧来报班培训吧,自学没个几年根本达不到就业水平,时间就是金钱,早掌握早赚钱。明德扬专业FPGA培训,带你摆脱上面的四种情况,一对一辅导教学,您完全掌握了老师才开始下一个知识点的教学,不用担心大班教学跟不上其他学员进度,明德扬承诺能真正让你拥有独立完成任意FPGA项目的能力。就业班:10800周末班:7999网络班(线上真人教学):599920000以下找对手,欢迎对比,了解更多请Q我821219077,竭诚为您服务。