little小蔡

能给个安全点的fifo吗

调试一个基于alteraFPGA的项目,发现开机200次,就会有1到2次的开机不正常现象,但只要是成功开机了,无论运行多久都是正常的。遇到这类问题,按照经验来说一般首先想到的可能是电源硬件出了问题,是否负载突变,负载过重了,但是用示波器看了几天的电源波形,都

【嵌入式】cache,你给我听话点

在上一篇“为什么程序越优化越慢?”里,详述了程序指令在cache里发生冲突后另运行效率变的完全不可预测的问题,并提出了两种将不老实的cache变乖的良方。本以为cache已经完全被驯服了,没过多久,已经优化到23s的程序,在我修改了一段代码后,又掉回了30s,调出逻辑分析

【嵌入式】程序为什么越优化越慢?

正在开发一个基于NiosII内核的项目,使用的开发环境是niosforeclipse,编译器是GCC,整体功能实现后,开始优化速度。默认没有开启gcc的优化选项,一段关键函数Key的运行时间为30s,开启O1一级优化后,程序大小从15KB减小到12KB,但运行时间增加到了35s,开启O2后,程序

再诡异的现象背后可能只是一个傻x的低级错误—谈调试心态

今天调试一个小模块,FPGA的24号引脚作为输入端,在此引脚上外部给一个恒定的0电平,理论上程序应该一直读为0电平,在开机的前10s,程序内部读取该引脚为0,可是10s后始终读取为1,而且问题可以重复再现。按照常规,首先检查24号引脚是否连接正常,粗看了一下,和

马克思教我们优化时序之补全if else

时序优化中重要的一项就是提高模块的最高工作频率,工作频率由关键路径决定,通常的提高工作频率的步骤是:利用时序分析工具找到关键路径,分析关键路径主要延迟是布线延迟还是逻辑延迟,然后轮番十八般武器,如果是逻辑延迟过大就用逻辑切割,插入D触发器,如果

TimeQuest之delay_fall clock_fall傻傻分不清楚

这篇我想分享一个之前在用TimeQuest约束双边沿模块的inputdelay时犯得一个错误,有人看了可能会觉得傻傻的,什么眼神,delay_fall和clk_fall怎么会分不清呢,字面意思好区分,可要深究在约束里的具体含义,还得花点功夫,下面以ddio接收模块为例说明它们的含义以

换位思考多周期约束

在开篇前先推荐两篇文档,一篇是altera的官方文档ApplingMulticycleExecptionsintheTimeQuestTimingAnalyzer,另一篇是riple兄很早之前推荐过的MulticyclesExceptionBetweenTwoSynchronousClock,这两篇都是关于多周期约束很好的上手文档,虽然可以快速上手解决当

三段式状态机的思维陷阱

用三段式描述状态机的好处,国内外各位大牛都已经说的很多了,大致可归为以下三点:1.将组合逻辑和时序逻辑分开,利于综合器分析优化和程序维护;2.更符合设计的思维习惯;3.代码少,比一段式状态机更简洁。对于第一点,我非常认可,后两点在CliffordE.Cummings著的

TimeQuest约束外设之ddio的潜规则

最近调试了下altera里的ddio模块,在Timequest约束ddio_out输出时,遇到了一个其实不算是问题的问题。ddio_out模块如图1所示。图1DH和DL在clk上升沿采样,时钟的高电平随即使能DH通道输出高位数据,下降沿到来时使能DL通道输出低位数据,这样就实现了数据的双边沿输出。

TimeQuest约束外设之诡异的Create Generated Clocks用法

最近在alteraFPGA里设计一个外设的驱动模块,模块本身逻辑很简单如下图所示,但是模块和外设之间的时序约束问题搞的很头疼,今天先讲讲总结的一些Timequest下外设约束方法,特别是那毫无用户体验而言的CreateGeneratedClocks用法。要让外设正确接收FPGA发出