C中的FPGA中断处理

时间:2015-11-22 19:02:07

标签: c fpga xilinx interrupt-handling microblaze

我在C中的Microblaze微处理器上设计状态机的课程。我遇到的问题是我必须改变某个图片。让我们说我在FPGA上按BTNL;我必须获得5秒的风景图片,并在一定的3秒后,我必须使该图片闪烁。同时,时间5s - >必须在7段显示屏上显示0。这是检测到按钮并且必须显示闪烁模式的情况。 中断每0.004秒发生一次 并且微处理器的时钟是100MHz。

for(j=0; j<=5secs; j++)
{
    if(j>3secs)
    {
        if(counter == sec){
            counter=0;
            if(temp==white){ //white background
                temp=background;
            }
            else temp=white;
        }else counter++;
        XGpio_DiscreteWrite(&REGION[4],1,temp);
    }
    else XGpio_DiscreteWrite(&REGION[4],1,temp);
    if(j==5secs)
        states = IDLE;
}

我的主要问题是在7段显示屏上显示数字。当我在案例中放置displayNumber()函数时,整个事物只有在进入displayNumber()行时才会冻结。我知道嵌套的for循环花费了大量的时间和精力,我认为这可能会导致问题,但我找不到可行的解决方案。任何想法或建议都非常感激。

另一件事是我尝试了一个标志,但由于中断处理它不起作用。

编辑: 我不是想获得我的问题的复制/粘贴解决方案。整个事情非常庞大,我的意思是verilog项目以及c中完成的其他功能的文件。我不希望你运行代码并重现整个事情,因为学校已经提供了Verilog项目,所以你必须生成一个比特流然后上传并运行整个板上的东西。我在这里只是在寻找一个关于你如何改进这一点的建议,你是否遇到过FPGA的这种行为,任何想法。

感谢您花时间阅读问题!

0 个答案:

没有答案