- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 空指针并非空字符串,运算符运算顺序
在C语言中将一个整数zhuanhuan转换为一个指针,最后得到的结果都取决于具体的C编译器实现,但是,有一个特殊情况就是常数0,编译器保证由0转换而来的指针不等于任何有效的指针。出于代码文档化的考虑,常数0这个值经常用一个符号来代替:#define NULL 0当常数0被转换为指针使用时,这个指针绝对不能被解除引用,换句话说,当我们将0赋值给一个指针变量时,绝对不能企图使用该指针所指向的内
2017-03-24 09:18:56 360
原创 数组
C语言中的数组值得注意的两点:1.C语言中只有一维数组,而且数组的大小必须在编译期就作为一个常数确定下来。数组的元素可以是任何类型的对象,模仿出多维数组也很正常。2.对于一个数组:确定数组的大小,以及获得指向该数组下标为0的元素的指针。malloc()函数有可能无法提供内存,内存分配失败后会返回空指针。
2017-03-23 10:54:32 266
原创 字符与字符串
用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列号。用双引号引起的字符串,代表的却是一个指向无名数组起始字符的指针,该数组被双引号之间的字符以及一个额外的二进制为零的字符'\0'初始化。编译器:词法分析如果(编译器的)输入流截止某个字符之前已经被分解为一个个符号,那么下一个符号将包括从该字符之后可能组成一个符号的最大字符串。“贪心法”
2017-03-22 09:47:17 376
原创 两个双口ram之间数据的传递
1.如果两个双口ram数据位宽相同,则采用时钟快的ram等待时钟慢的ram来完成从一个ram中读取数据并存储到另一个ram中;例如从ram A中读取数据到ramB中,ram A的时钟为20M,而ram B的时钟为40M,可以重复读ram A来覆盖写ram B的方法,如果把ramB中的数据读取出写到ram A中,ram B需要等待ram A一个时钟后再改变地址。2.如果两个双口ram数据位宽不同
2017-03-20 20:42:04 3585
原创 字符数组与字符串指针的区别
字符串指针与字符数组一般情况下都能对存储的字符串进行修改等操作,但是当字符串指针被定义为字符串常量时(静态区),字符串指针所指向的字符串就不能被改变。如下:#include int main(){ char s1[]="hello,world"; char s2[]="hello,world"; char *s3; char *s4; s3="hello,world"; s4
2017-03-17 15:12:09 465
原创 物理综合
逻辑综合是将HDL描述语言转换成不含布局布线信息且能够映射(map)到物理器件的门电路过程。物理综合是通过改变网表的布局(placement)从而获得不错的综合结果。设计在布局完成之前,其节点间的延时预估都是毫无意义的!!
2017-03-16 10:29:26 2131
转载 代码编写过程中应该考虑的时序优化(笔记)
1.通过减少关键路径上的组合逻辑单元数来优化时序FPGA逻辑设计中时序路径上的组合逻辑都会给路径增加延时,从而影响设计性能的往往只有几条关键的路径而已,所以可以通过减少关键路径上的组合逻辑单元数来减小该路径上的延时,从而达到优化的目的。关键路径重组是常用技术,多用于关键路径由多个路径组合而成的场合,而且这些被组合的路径之间又可以重组互相之间的相互顺序。2.适当进行逻辑复制以优化设计速度
2017-03-08 22:44:52 3196
原创 采用verilog编写状态机
如果使用的是system verilog,一定要使用枚举型来描述状态机。使用参数(parameters)来对状态机进行分配,因为参数会使得状态机易读以及减少编码过程中的错误。尽管Quartus II能够识别出整数,尽量不要直接使用整数来定义状态值。在状态转换逻辑中,不要使用状态寄存器进行算术运算,例如:next_state 如果将状态变量作为输出,那么Quartus II将无法识别
2017-03-06 14:18:18 2022
原创 设计综合工具能够识别的状态机
在设计状态机时应该尽量遵循以下原则:给状态机的输出分配默认值,防止综合器产生不必要的寄存器;将状态机逻辑和所有的算术逻辑功能以及数据路径分离,包括与状态机输出值的分离,这也是建议尽量使用多段式描述状态机的原因;如果设计中包含一个在多个状态都要使用的运算,那么在状态机外面定义这个运算,然后让状态机的输出逻辑来使用该运算结果;使用简单的同步或异步复位来确保状态机定义了一个上电初始化状态
2017-03-05 20:48:51 814
原创 如何写好状态机1
标准的状态机分为摩尔状态机和米勒状态机两种。摩尔状态机的输出只与当前状态值有关,且只在时钟边沿来时才会有状态变化。米勒状态机的输出不但与当前状态有关,而且与当前输入值有关,这一特点是其控制和输出更加灵活,但同时也增加了设计的复杂度。 时钟到达各个触发器的延时往往有差异(时钟歪斜),这种差异将直接导致状态机在状态转换时产生过度状态,当这种延时进一步加大时,将有可能导致状态机进入非法状态,这就是摩尔状
2017-03-05 15:44:38 1582
原创 复位电路
同步复位启动时同步于寄存器的时钟域;而异步复位则是自然地到达寄存器,其与寄存器所在的时钟域之间并无明确的时序关系;异步复位同步释放就是一个异步复位被同步到系统时钟域。
2017-03-03 17:02:05 874
基于ARM11视频采集的WiFi小车
2016-06-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人