功能: 实现10Hz向外发送10个字节数据 问题: 通过仿真,没有问题,下载后也没有问题 ;系统断电后,重起,没有数据输出.
// Send.v module Uart_Send(Clk_Out,TXD,TI); input Clk_Out; output TXD,TI; reg[7:0] Send_d; //TI为发送中断标志:正在发送时为0,发送完最后一位后置1,且空闲时为1 reg [9:0] Send_d1ata; //发送数据缓存(加上起始位“0”和结束位“1”) reg load_count = 1; //装载输入数据标志:为“1”时载入新数据 reg TI,TXD_buf,TXD; reg Date_En = 0; //100H发送数据使能 integer Clk_Conut = 0; integer send_count = 0; integer data_Count = 0; //TI为发送中断标志寄存器,TXD_buf为串行数据数据输出缓存 always @(posedge Clk_Out ) //9600Hz脉冲计数,经过100分频,得到100Hz的发送使能 begin if(Clk_Conut <= 960) begin Clk_Conut = Clk_Conut+1; end else begin Date_En = 1; Clk_Conut = 0; end //发送使能,开始发送数据 if(Date_En == 1) begin //装载数据 if(load_count == 1) begin Send_d = data_Count;//data[data_Count*8+:8] ; Send_d1ata = {1'b1,Send_d,1'b0}; load_count = 0; TI = 0; end else begin if(send_count >= 10) //当send_count等于10时,已发送完一个字节 begin send_count = 0; //清零发送位数计数器 TXD_buf = 1; TI = 1; //发送完毕中断标志 load_count = 1; //置位load_count,允许载入新数据 data_Count = (data_Count+1); //指向下一个数据,如果发送字节完毕,Date_En=0; if(data_Count >= 10) begin Date_En = 0; data_Count = 0; end end else begin TI = 0; //清除发送完毕中断标志 TXD_buf = Send_d1ata[0]; //串行数据输出 Send_d1ata = (Send_d1ata >> 1'b1); //将高位移至最低位 send_count = (send_count + 1'b1);
end
end TXD <= TXD_buf; //数据从TXD端输出 end end endmodule 下载完,通过示波器,串口调试助手接受数据,都正常。
关掉FPGA的电源,重开启,示波器上面是很多脉冲,没有固定周期,
这是什么原因?????
|