CPLD控制部分软件设计与实现
3.1 EPM7064A的 Verilog HDL描述
EPM7064A是整个配置电路的核心,它完成 Flash配置数据的加载和配置时序的产生。按照由上至下的进行设计,将其分成三个主要功能模块,即数据加载过程中与 PC机通讯的 UART模块、写 Flash时序产生模块和配置时序产生模块,分别由 Verilog HDL硬件描述语言实现。
数据加载过程中,EPM7064A的 UART模块与 PC机通讯,同时产生 Flash编程控制字,将 PC机送来的数据写入指定的块。其主要工作过程是串口模块接收到一个字节数据后,其 DATARDY有效,触发 Flash写模块先将三个控制字数据 AA、55、A0写入 Flash,然后将接收到的数据写入 Flash。写 Flash仿真时序图如图 4所示。
数据读取和配置时序模块的主要程序代码如下:
module conf( clk20m, //设时钟频率20Mhz
…… ) //端口列表
…… //输入输出口定义
…… //寄存器定义
…… //配置模式参数定义
…… //工作状态参数定义
always@(posedge clk)
begin
if (conf_start==1) //配置启动脉冲启动一次配置
nCONFIG<=0;
if(nCONFIG==0)
count1<=count1+1;
if (count1<=50) //进入复位状态,复位时间大于2us
state<=reset;
if(count1>50)
nCONFIG<=1;
if(nSTATUS==1)
state<=configure; //进入配置状态
if(CONF_DONE)
begin state<=init; count2<=count2+1;end //进入初始化状态
if(INIT_DONE)
begin state<=user_mode;count2<=0;end //进入用户状态
end
always@(posedge clk)
begin
case(state)
reset: begin