• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

fpga程序与实际的时序逻辑不对应。。求助

视觉℡ 2018-09-05 浏览量:1027

先上代码:

module flash(
                  output  flash_dataout//flash数据输出
                  output led0
						output led1
						output  wire [7:0]    DB8
                  input flash_clk//flash时钟
						input flash_cs
                  input flash_datain
           
                        );
reg [7:0] clk_num;//时钟计数
reg [7:0] reg_cmd;//命令寄存器
reg red_id= 1'b0;//读取命令标志位
reg data_out= 1'b1;
reg led0_n = 1'b1;
reg led1_n = 1'b1;

parameter ID_data=64'h0102030405060708;
assign flash_dataout = red_id ? data_out : flash_datain ; 
assign led0 = led0_n ? 1'b1 : 1'b0; 
assign led1 = led1_n ? 1'b1 : 1'b0; 
assign DB8 = clk_num;
//cs上升沿需要初始化所有数据  标志着新的一条命令到来
//clk上升沿  读取数据
always @(posedge flash_cs or posedge flash_clk)  //clk上升沿沿触发
begin
	if( flash_cs ) begin //cs 低电平状态   不知道为什么会进这个if语句内
		 
           clk_num <= 8'h00;   //清除时钟计数    
		 reg_cmd <= 8'h00;  //清空命令寄存器
		 red_id <= 1'b0;  //读取ID命令标志位
	end
	else begin
		if(clk_num < 8) begin//前8个时钟是  命令	 
			
			reg_cmd[7-clk_num] = flash_datain ;//循环将8位命令拼接			
		end
		else if(clk_num == 8) begin//接收完前8位命令  开始判断	
			 led1_n <= ~led1_n;
			if(reg_cmd == 8'h4b) begin //判断是不是读取芯片ID	
				
				red_id <= 1'b1;  //读取ID命令标志位
			end
		end
		clk_num <= clk_num + 8'h01;//时钟的下降沿计数  用来查询是否命令结束
		led0_n <= ~led0_n;
	end
end

程序的目的:为了模拟25Q64存储器部分功能,STM32向FPGA读取一个ID号,(时序与真实的25Q64一样)

逻辑分析仪采集到的数据:

0  ->  flash_cs (stm32输出的片选)    1 ->  flash_clk (stm32输出的时钟)   2  ->  flash_datain(stm32输出的数据输出)   3->flash_dataout  (FPGA输出的数据输出)   4-8   接的是  DB8的低4位   为了观察 clk_num 的数据

QQ截图20180905223104.jpg

问题:每到 flash_datain 高电平的时候   clk_num就清空了 (也就是进入    if( flash_cs ) begin ​   这里面了),已经修改过引脚测试了,不是电路的问题,软件的问题,

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • reg_cmd[7-clk_num] = flash_datain ;//循环将8位命令拼接


    这个语句是无效的对于综合器来说,可以使用移位寄存器代替

    • 发布于 2018-09-24
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:1
  • 这个要检查一下对应的时序还有切换的寄存器状态是否有异常的情况
    • 发布于2018-10-13
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

fpga程序与实际的时序逻辑不对应。。求助