zhliao2

风雨兼程,一路向北-------fpga (Keep a quiet heart study)

[置顶] FPGA设计基本原则,设计思想,结构

摘要: 原文:http://bbs.ednchina.com/BLOG_ARTICLE_124824.HTM题记:这个笔记不是特权同学自己整理的,特权同学只是对这个笔记做了一下完善,也忘了是从那DOWNLOAD来的,首先对整理者表示感谢。这些知识点确实都很实用,这些设计思想或者也可以说是经验吧,是很值得每一个有志于FPGA/CPLD方面发展的工程师学习的。1、硬件设计基本原则(1)、速度与面积平衡和互换原则:一个设计如果时序余量较大,所能跑的频率远高于设计要求,能可以通过模块复用来减少整个设计消耗的芯片面积,这就是用速度优势换面积的节约;反之,如果一个设计的时序要求很高,普通方法达不到设计频率,那么可 阅读全文

posted @ 2012-04-10 15:20 zhliao 阅读(6000) 评论(0) 推荐(1) 编辑

2013年5月6日

【转】时钟分频和使能时钟

摘要: 时钟使能电路是同步设计的基本电路。在很多设计中,虽然内部不同模块的处理速度不同,但由于这些时钟是同源的,可以将它们转化为单一时钟处理。在ASIC中可以通过STA约束让分频始终和源时钟同相,但FPGA由于器件本身和工具的限制,分频时钟和源时钟的Skew不容易控制(使用锁相环分频是个例外),难以保证分频时钟和源时钟同相,因此推荐的方法是使用时钟使能,通过使用时钟使能可以避免时钟“满天飞”的情况,进而避免了不必要的亚稳态发生,在降低设计复杂度的同时也提高了设计的可靠性。 带使能端的D触发器,比一般D触发器多了使能端,只有在使能信号ENA有效时,数据才能从D端被打入D触发器,否则Q端输出不改变。 我. 阅读全文

posted @ 2013-05-06 00:57 zhliao 阅读(1710) 评论(0) 推荐(0) 编辑

2013年1月4日

【转】深入理解函数指针

摘要: 1.指针函数的定义顾名思义,指针函数即返回指针的函数。其一般定义形式如下:类型名*函数名(函数参数表列);其中,后缀运算符括号“()”表示这是一个函数,其前缀运算符星号“*”表示此函数为指针型函数,其函数值为指针,即它带回来的值的类型为指针,当调用这个函数后,将得到一个“指向返回值为…的指针(地址),“类型名”表示函数返回的指针指向的类型”。“(函数参数表列)”中的括号为函数调用运算符,在调用语句中,即使函数不带参数,其参数表的一对括号也不能省略。其示例如下:int *pfun(int, int);由于“*”的优先级低于“()”的优先级,因而pfun首先和后面的“()”结合,也就意味着,pfu 阅读全文

posted @ 2013-01-04 23:02 zhliao 阅读(264) 评论(0) 推荐(0) 编辑

2013年1月3日

【转】gdb调试

摘要: 里面有很多好东西http://blog.csdn.net/haoel/article/details/2879 阅读全文

posted @ 2013-01-03 00:07 zhliao 阅读(202) 评论(0) 推荐(0) 编辑

2013年1月2日

【转】Linux常用函数

摘要: 好东西当然要转,嘿嘿。1,系统调用 文件的操作函数#inlclude <fcntl.h>int open(char *name,int how) 第二个参数,O_RDONLY O_WRONLY O_RDWR O_CREAT#include <unistd.h>int close(int fd)size_t read(int fd,void *buf, size_t count)size_t write(int fd,const void *buf,size_t count)sleep(1) 系统睡眠一秒钟,最小单位为一秒。#define msleep(x) usleep 阅读全文

posted @ 2013-01-02 23:12 zhliao 阅读(308) 评论(0) 推荐(0) 编辑

2012年12月28日

【笔记】gcc编译流程

摘要: 参考<<嵌入式Linux应用程序开发>>首先给出一个最常见的程序hello.c# include <stdio.h>int main(void){ printf("hello, this is embedded world"); printf("\n"); return 0;}gcc编译的流程有4个步骤1:预处理(对包含的头文件#include和宏定义#define,#ifdef等进行处理)gcc -E hello.c -o hello.i2:编译(gcc首先要检查代码的规划性,是否有语法错误等,以确定代码要实际要做的 阅读全文

posted @ 2012-12-28 21:36 zhliao 阅读(209) 评论(0) 推荐(0) 编辑

2012年12月27日

【转】c中main带参数是什么玩意

摘要: int argc, char *argv[]),这两个参数用于在运行程序时,从外部给程序传递参数,其中argc中保存了参数的个数,argv中分别保存了各个参数. 例如一个程序的main()函数头部形如int main(int argc, char *argv[]),编译链接后生成的可执行文件名为a.exe,那么请注意下面的调用: a.exe abc def 在上面的命令行中,a.exe是要运行的程序名称,后面的abc和def就是传入程序的两个参数,这两个参数就通过argc和argv传入程序,注意这些参数都是字符串。 通过上面的调用,在这个程序中,argc=3,a... 阅读全文

posted @ 2012-12-27 23:39 zhliao 阅读(290) 评论(0) 推荐(0) 编辑
【转】vim中文显示乱码现象的解决方案

摘要: 打开vim的配置文件,位置在/etc/vim/vimrc在其中加入set fileencodings=utf-8,gb2312,gbk,gb18030set termencoding=utf-8set encoding=prc保存退出source /etc/vim/vimrc此时vim就能正确显示中文了http://blog.sina.com.cn/s/blog_45bcb4c30100x0lj.html 阅读全文

posted @ 2012-12-27 20:01 zhliao 阅读(264) 评论(0) 推荐(0) 编辑

2012年12月24日

【笔记】循环操作来同步数据

摘要: 参考<<Verilog那些事儿-整合篇>>我们知道模块之间的沟通需要一个时钟,若要达到两个模块之间时序的同步,虽然可以用寄存器来延时输出达到时序同步的效果,如果两个模块之间的时钟相差一个时钟的话,那么我们可以定义一个寄存器来达到同步。但是想想,若是两个模块之间的时钟相差5个或者更多的话,仅仅用寄存器来同步的话,岂不累死人。所以我们需要定义一个新的同步时序的办法,这个就是下面介绍的循环操作来同步数据。首先给出的是用寄存器来使模块之间同步的整体的RTL图:其次是用循环操作来同步数据:Verilog源代码1:module exp7_env( input CLK, input 阅读全文

posted @ 2012-12-24 15:31 zhliao 阅读(353) 评论(0) 推荐(0) 编辑
【笔记】Verilog怎么把for也整合过来

摘要: 参考<<Verilog那些事儿-整合篇>>一:模仿一个for循环for(Act1 = 0; Act1 < 10; Act1 ++)case (i) 0 : begin if (x == C1) begin x <= x + 1'b1; Act1 <= Act1 + 1'b1; //x == 9时,这里Act1就为10了 end if (C1 == 10 - 1) begin ... 阅读全文

posted @ 2012-12-24 14:15 zhliao 阅读(460) 评论(0) 推荐(0) 编辑

2012年12月23日

【笔记】把计数整合在步骤里的写法

摘要: 参考<<Verilog那些事儿_整合篇>>Verilog源代码module c1b_module( input CLK, input RSTn, output Q, /******************/ output [4:0]SQ_C1, output [1:0]SQ_i ); /*************************/ reg [1:0]i; reg [4:0]C1; reg rQ; always @ ( posedge CLK o... 阅读全文

posted @ 2012-12-23 19:10 zhliao 阅读(307) 评论(0) 推荐(0) 编辑
【笔记】精密计数

摘要: 参考<<verilog那些事儿-时序篇>>module counter_module ( input CLK, input RSTn, output _1US, output _3US, output _is1US, output _is3US, output [4:0]C1, output [5:0]C2); /*******************************/ parameter T1US = 5'd20; /****************************... 阅读全文

posted @ 2012-12-23 14:53 zhliao 阅读(297) 评论(0) 推荐(0) 编辑
【转】博大精深的c

摘要: 关于指针数组额数组指针的详细解析:http://www.cnblogs.com/oomusou/archive/2011/06/12/c_pass_2_dim_arr_to_fun.html 阅读全文

posted @ 2012-12-23 13:32 zhliao 阅读(250) 评论(0) 推荐(0) 编辑

2012年12月22日

结构体中对字符串的赋值

摘要: # include <stdio.h># include <string.h> //strcpy()typedef struct { int number; char name[10];} student, *pstudent;student struct_call_by_value (student boy){ boy.number = 16; strcpy(boy.name, "zhliao2"); //这里是对字符串复制 printf ("in function:\n"); printf ("number = &a 阅读全文

posted @ 2012-12-22 21:00 zhliao 阅读(8665) 评论(0) 推荐(0) 编辑

2012年11月18日

quartusII如何定制菜单

摘要: 首先打开quartusii--tool--customize效果如图所示:把你需要的菜单相应的打上勾,之后点击customize--ok,之后你就进行DIY菜单栏了。 阅读全文

posted @ 2012-11-18 12:17 zhliao 阅读(362) 评论(0) 推荐(0) 编辑

2012年11月13日

【转】LPM各种名词解释

摘要: LPM(Library Parameterized Modules) 即参数化的宏功能模块库。应用这些功能模块库可以大大提高IC设计的效率。LPM标准在1990年被推出,1993年4月,LPM作为电子设计交换格式(EDIF)的附属标准,纳入了电子工业协会(EIA)的临时标准。 在MAX+PLUS II中调用LPM库函数非常方便,用户既可以在图形输入法中直接调用,也可以在HDL源文件中调用。 MAX+PLUS II提供的LPM库如表2-5所示.它是MAX+PLUS II提供的可供调用的一些功能模块.LPM库所在的目录是\maxplus2\max2lib\mega_lpm 。门单元模块lpm_an 阅读全文

posted @ 2012-11-13 23:52 zhliao 阅读(3955) 评论(0) 推荐(0) 编辑