always @ (posedge clk)
begin
if(rst==0 || mode==0)
sig_sel<=0;
else if (cnt>=1_0000_000 || cnt_hold>=1_0000_000 || cnt_idle>=1_0000_000)
sig_sel<=0;
else if (curr_s==hold && sig_sel==0 && cnt<1_0000)
sig_sel<=1;
else
sig_sel<=sig_sel;
end
计数器:
周期测量同时使用BCD码计数器和二进制计数器。二进制值用于状态的判断和转换。BCD码方便了单片机处理和显示数据,这与频率测量模块相同。
图8—ATmega128与FPGASPI通信
本接口模块中所需实现的逻辑功能是,从机FPGA在主机ATmega128提供的CLK时钟信号下,按照SPI接口规范,按照SPI时序图的规范接受数据,然后执行测量对象选择、液晶显示等操作。其工作流程如下,ATmega128通过MOSI向FPGA发送数据(该数据低八位储存地址信息,高八位储存数据信息,FPGA对地址译码,选择合适的数据输入端),AVR在load端产生下降沿,FPGA将相应数据读入寄存器中,当CS=0,load=1的情况下,在每一个SCLK时钟的上升沿,移位寄存器的数值左移一位。数据就通过MISO送到MCU中。
上一页 [1] [2] [3] [4] [5] [6] 下一页