一个变量在两个进程中的使用问题

2020-02-04 10:28发布

module timer_2016(
gclk,                //全局时钟
cpu_WE,               //CPU的写使能引脚
PA7_DIR_0_TO_CPLD,    //方向控制引脚,0:总线由CPU到CPLD,1:总线由CPLD到CPU,
PA6_SD_0_data,        //数据状态控制引脚,0:总线传输数据,1:总线传输状态
PA5_reset,            //复位
DATA_CPU_BUS,         //与CPU相连的总线
IO_12_OUT,            //与IO相连的总线
);
//端口方向说明
input   gclk;
input   cpu_WE;
input   PA7_DIR_0_TO_CPLD;
input   PA6_SD_0_data;
input   PA5_reset;

inout   reg [11:0] DATA_CPU_BUS;
output  reg [11:0] IO_12_OUT;

reg [11:0] dk_status_data;

//CPU下传数据或状态
always @(negedge cpu_WE or posedge PA5_reset) //进程A
begin
        if(PA5_reset)
         begin
                i = 0;
                dk_status_data <= 0;
         end
         else if((PA7_DIR_0_TO_CPLD == 0) && (PA7_DIR_0_TO_CPLD == 1))
     begin                                      
                dk_status_data <= DATA_CPU_BUS;
         end
end
always @(posedge gclk or posedge PA5_reset) //进程B
begin
        if(PA5_reset)
         begin
                j = 0;
         end
         else if((PA7_DIR_0_TO_CPLD == 0) && (PA6_SD_0_data == 1))  
         begin                         //设置断口输出状态
                 IO_12_OUT <= dk_status_data;
         end
end
       
endmodule

最近做一个产品,ARM(stm32f103)与CPLD 并口通讯,CPLD的时钟信号gclk为16M有源晶振,
ARM的总线接在CPLD上,且使用了ARM的写信号cpu_WE,ARM的PA7_DIR_0_TO_CPLD,PA7_DIR_0_TO_CPLD引脚
控制CPLD工作在不同的状态。DATA_CPU_BUS 是ARM的数据总线,IO_12_OUT是CPLD的输出IO口,
代码如上,现在一个问题是,在进程A中,ARM把数据写给CPLD一个变量dk_status_data,希望在进程B中该变量
赋值给CPLD的IO_12_OUT,以实现,ARM把数据给CPLD,CPLD进行数据输出。通过程序下载,测试发现,无论ARM在总线上
写入0xfff,还是写入0,CPLD均输出0xfff。请问为何啊 !急等,
而如果CPLD程序改为:
always @(negedge cpu_WE or posedge PA5_reset) //进程A
begin
        if(PA5_reset)
         begin
                i = 0;
                dk_status_data <= 0;
         end
         else if((PA7_DIR_0_TO_CPLD == 0) && (PA7_DIR_0_TO_CPLD == 1))
     begin                                      
                dk_status_data <= DATA_CPU_BUS;
                IO_12_OUT <= dk_status_data;
         end
end
就能达到效果,既是ARM在总线上写入不同数据,CPLD均能实现IO_12_OUT正确输出。
求大师指点!  多谢多谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。