//功能:采集数据,找出最大的数据
//McuStart 单片机输入信号,要求FPGA开始工作
//McuReset 复位AD0809
//Write 开始AD0809转换
//Read 读取AD0809转换结果
//EOC AD0809是否转换完成标志
//Data 0809数据口
//我省略了0809de的ALE 和时钟输入 引脚
//只要不断有McuStart脉冲,就可以不断进行AD转换,不过脉冲周期长度要考虑
module AD0809(McuStart, McuReset, Write, Read, EOC, Data);
input[7:0]Data;
input McuStart, McuReset, EOC;
output Write, Read;
reg TempA[7:0], TempB[7:0];
always @(negedge McuReset) //复位
begin
if(McuReset == 1'b0)
begin
Write = 0;
Read= 0;
// ALE = 0;
// TempA = 8b'00000000;
// TempB = 8b'00000000;
end
// else这里不加else,不知是否有问题?
end
always @(negedge McuStart)//
begin
if((McuStart == 1'b0) && (McuReset == 1'b0) && (EOC ==1) )//
begin
Write = 1;//
Read= 0;
Write = 0;//产生一个写脉冲,0809开始转换
// 但是我想不出如何延时,以加宽脉冲?
end
end
always @(posedge EOC)
begin
if(EOC == 1'b1)
begin
Read = 1;
Write = 0;
Read = 0;// 产生一个读脉冲,这里也要加延时,不知如何加
TempA = Data;
if(TempA > TempB)
begin
TempB = TempA;
end
end
end
endmodule |