EDN首页   博客首页

最新日志

发表于:2008-12-30 8:46:22
标签:无标签

1

MX31

今天和一个朋友在网上聊MX31,才知道Freescale已经公布了MX31 PDK的原理图和PCB文件.加上之前就可以免费下载的Linux BSP.软硬件都全了.
这对于想做MX31板子的朋友真是个天大的好消息. 不知有没有朋友有兴趣!

有兴趣的朋友可以看一下i.MX31 PDK的设计http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX31PDK&nodeId=0162468rH311432973ZrDR

注:i.MX31是Freescale推出的一款高性能多媒体应用处理器,内部集成了ARM1136JF-S内核,CPU运行频率高达532MHz,带有16K+16K   数据/指令 L1 Cache,128K L2 unified Cache,并且具有矢量浮点协处理器(Vector floating point coprocessor );

外部存储器接口:
SDRAM 16/32-bit, 133 MHz
Mobile DDR 16/32-bit, 266 MHz
NAND flash 8/16-bit
PSRAM

多媒体外设:
具有VGA级别的 MPEG-4硬件视频编码器,可以完成640x480@30fps视频编码,减轻CPU负担  
图形加速器 (i.MX31 only),可编程图形引擎用于3D显示图形加速,支持OpenGL ES1.1标准  
图像处理单元 (IPU),辅助CPU完成图像的翻转/缩放等操作
CMOS/CCD 传感器接口
LCD/TV 显示控制器,最高支持 1024x1024@14M colors

外设接口:
UART,I2C,SPI,IIS,SSI,SDHC,Memory Stick,CF,ATA,USB2.0 HS/FS/OTG

系统分类: 嵌入式   |    用户分类:    |    来源: 原创

该用户于2008-12-30 8:46:26编辑过该文章

评论(0) | 阅读(71)
发表于:2008-12-30 8:09:36
标签:无标签

0

工程师和生意人的差别

来到他家里玩,曾拥有100多号工人的他,因生意失败,只能在家做一些手工活,帮补家计。

那手工活很繁锁,我问他,搞完一件要多久?回答说3到四天吧,我又问,这么繁锁,这么多工序,做完后能赚多少钱?回答说,100到150元吧

心中在想,算他3天做完一件,一个月也只能做10件,加起来,也就1500元了,这样如何生存呢?

我给了他建议,我说,不如你想办法,弄些工具,让效率高一些,这样,一天一件,一月也三四千的收入了。

他没加思索(心里早有计划)回答说,打算先请10到20号工人,把量做上去,
后面还说了很多经营手法


回家途中,心在想,脑在思考:搞技术和商人的差异,可能就在这里了。

系统分类: 自由话题   |    用户分类:    |    来源: 原创

该用户于2008-12-30 8:09:40编辑过该文章

评论(1) | 阅读(76)
发表于:2008-11-4 13:19:35
标签:无标签

1

程序员的9重境界

第一重:
在哪本电脑杂志上看见软件工程师这个职业介绍,或者走在大街上看见某某软件培训机构鼓吹培训完就能年薪10万的广告,有些羡慕那些编程序的,自己有些蠢蠢欲动。
第二重:
用控制台或者说SDK之类的东西写了一个“HELLO WORLD!”,感觉编程这个东西,太简单没难度。
第三重:
学会了简单的使用某某工具例如VC,知道怎么利用工具创建对话框之类的东西了,认为自己已经有了“扎实”的基础,出去找工作四面碰壁之后感叹人心不古世态炎凉。
第四重:
以极低的要求找到工作,突然发现自己不会的实在是太多太多,不求甚解是无奈之举。这个阶段写代码写完之后主要是试,试的标准:“能运行就是成功,不能运行就是失败。”一个小模块写完之后被黑盒蹂躏几十次稀松平常。
第五重:
突然意识到不能再瞎干了,于是知道了如何规范的写代码,尽力的把代码写的短小精悍,看一堆关于算法的书,并且会把自己的或者别人的优秀代码分门别类存起来,以便经常参考使用。
第六重:
做的时间越长,发现自己不会的越来越多,每每遇到不太理解的必然刨根问底,写完一段代码,一定仔仔细细把程序研究个透,不让他出现一点泄漏一点警告才罢休,以挑战白盒作为乐趣。
第七重:
把各种工具研究个稀巴烂,即使一个全新的语言或者工具,也能在半个月之内熟练使用,这个时候,仍然认为自己距离高手还有很大差距,遇到新手来公司面试,很惊讶这些人居然连怎么操作内存都不会就敢出来混了?
第八重:
把编程工具用烦了,开始喜欢控制台或者说SDK,纯粹的API编程变成了自己的最大乐趣。
第九重:
在电脑杂志上看见软件工程师的职业介绍,或者走在大街上看见某某软件培训机构鼓吹培训完就能年薪10万的广告,想对后来人说些什么却终究发现无话可说,只好一笑而过。


第一重到第四重,需要努力,第五重到第六重,需要悟性,想到第九重,需要智商和福缘。

系统分类: 软件开发   |    用户分类: 无分类    |    来源: 转贴

评论(0) | 阅读(169)
发表于:2008-11-4 10:50:53
标签:无标签

1

知道不?知道啥叫跨国大公司的团队精神不?

幽默一下:

 

知道不?知道啥叫跨国大公司的团队精神不?看图就知道了

系统分类: 自由话题   |    用户分类:    |    来源: 转贴

评论(1) | 阅读(166)
发表于:2008-10-20 21:10:56
标签:股市  

1

用孔夫子思想看当前股市!真是太对了

用孔夫子思想看当前股市!真是太对了

子曰:“赐也,女以予为多学而识之者与?”

    孔子说:赐啊(赐就是端木赐,我前面博文写过的那个子贡),你以为我的学问是多学而一一记在心上的吗?

    对曰:“然,非与?”

    子贡说:对,----难道不是??

    曰:“非也,予一以贯之。”   

    孔子说:不是这样的,我是用一个最基本的思想方法来贯穿它们。 

   

    孔子的这个最基本思想是什么呢,其实就是一种朴素的哲学思想,比如说总是辨证的看待问题,解决问题要解决主要矛盾等,依靠这些哲学思维可以很好的判断解决世界上大多数的事做股票如果不懂任何技术分析,但仍以这个“一以贯之”的思维,利用我国古代先哲留下的很多谚语,分析一下当前股市也是可行的。

 

    1、一人得道,鸡犬升天。

    股市去年牛市的时候,别管什么股,干什么的产业,有没有业绩,全跟着涨吧,谁也落不下,停盘的开盘后还要补涨。牛市中,只要你稍有点耐心,人人都成了股神。

    西方股市谚语:当台风来临的时候,就是一只猪也会飞起来。其实跟鸡犬升天一个意思。

 

    2、日中则移,月盈则亏,物极必反。

    本轮行情沪市指数自998点涨至去年11月的6124点的最高点,涨了六倍有余,正当人们憧憬着8000点,甚至10000点时,物极必反,股市掉头向下,直至1800点,从天堂直堕到地狱。

    巴菲特语:别人贪婪的时候,我恐惧。看来老巴也知道物极必反的道理,涨到如日中天,人人亢奋时,就得撤了。

 

    3、覆巢之下,焉有安卵。

    大盘自去年掉头向下后,跟上涨一样,无论什么股,也别管是干什么的,业绩有多好,全都从高价上滚了下来,股价掉一半以上的满地都是,正是“覆巢之下,焉有安卵”。

    当股市下跌成势时,不要以为自己的股票是好股票不会跌,赶紧跑吧,什么股都会跌。

 

    4、否极泰来。

    其实这也是“物极必反”的一种说法,当前股市已跌去近70%,市场人心惶惶,失望之极。正所谓“别人恐惧的时候,我贪婪”(老巴语录),或者是“人弃我取”,当股市重新站上6000点时,再回头,人们会发现并懊悔,当时遍地黄金而未拾取。

 

    我不知道股市具体什么时间开始涨,也不知道管理层会采取什么措施。但我相信股市一定会涨起来,少则一两年,多则三五年,潮涨潮落,月盈月亏,都是自然规律,股市也一样。



看论语,有一则对话,我很有感触,觉得孔子能在两千多年前就有这样的哲学思维很了不起。原文见《论语·卫灵公篇第十五》:

系统分类: 商务交流   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(177)
发表于:2008-10-7 8:12:59
标签:无标签

1

我对美国次级贷危机的感悟

我对美国次级贷危机的感悟
 
我的感悟是:
1:任何时候,包括自然人、企业、中央政府和地方政府,都要有足够的流动资金。否则灾难一旦降临就马上game over
2:不要太贪婪
3:居者有其屋,只是政治家的拉选票的说辞而已。在经济上是行不通的。
 
--------------原创帖子,非拷贝粘贴的哦------------

系统分类: 商务交流   |    用户分类:    |    来源: 原创

评论(0) | 阅读(195)
发表于:2008-10-7 8:06:44
标签:无标签

1

(转)【世象微观】妖怪死刑与其社会关系的关系

关于执法,古语有云,王子犯法,与庶民同罪;今语有云,法律面前,人人平等。自古以来,法律讲求的就是“平等”二字。尤其对于执法者而言,对“平等”二字的理解与落实稍有偏差,便可能向阎王爷送去一批冤死鬼。
                 
  做为唐僧的首席大弟子,孙悟空在西天取经团中的地位,相当于常务副团长,负责分管一切除妖事务,也就相当除妖办的负责人了。那妖怪们虽然大多不是什么好鸟,尽干些坑蒙拐骗抢杀奸贪之类的坏事,但妖怪也毕竟还是有妖权的。老天爷讲究众生平等,人命关天,妖命也应关天。所以,一切有现代法制意识的正义之士,都有理由向唐僧的取经团提出要求:悟空面前,妖妖平等。
                 
  所谓妖妖平等,大众化一点的说法就是,在使用法律武器制裁妖怪时量刑一定要准判刑一定要严:谁的坏事做得大,谁就要受到严厉的惩处;谁的狼心狗肺还没有完全变黑,只干些贪污受贿类的小事,受到的惩处自然就该轻一些;谁不遵妖道,居然想做个遵法守纪的好妖,不断但不该惩处,还得给些精神或物质奖励。
                 
  然而,执法官孙悟空先生,似乎并没有遵守这一规则。
  根据《西游记》提供的判决书,我们可以简要地将被悟空判决的妖怪作如下分类:。

  A、判处死刑斩立决者有:白骨精、虎鹿羊三怪、红鳞大蟒、蜘蛛精、豹子精、六耳弥猴、黑河妖、蝎子精、万圣龙王、青龙山三犀牛;。
  B、当场宣布无罪释放者:通天河的金鱼(观音水池中之物)、朱紫国金毛犼(观音坐骑)、黑松林的奎木狼(28星宿之一)、青牛精(太上老君坐骑)、黄眉老怪(弥勒佛司磬童子)、老鼠精(托塔天王之义女)、狮象鹏三妖(文殊、普贤坐骑,如来娘舅)、黄风怪(如来佛灵山脚下的老鼠)、青毛狮怪(文殊菩萨坐骑)、白鹿精(寿星坐骑)、九头狮精(救苦天尊座骑)、玉兔精(太阴星君身边工作人员)、牛魔王;。
  C、作为童工或门僮送给上级者:黑熊精、红孩儿、蜈蚣精。
                 
  通过对这些妖怪的身份背景和社会关系的仔细分析,我们会发现一些小秘密:一、凡是被判死刑而被斩立决者,全都是亲戚朋友中没有一人在政府部门工作的“民妖”;。
  二、而凡是被判无罪释放的,全都是悟空上级领导身边的工作人员或者司机;。
  三、这其中有两个例外:(1)、判处斩立决者当中,金角、银角大王是太上老君身边的工作人员,但他们虽然已被悟空就地正法,后来却被太上老君叽哩咕嘟地向阎王打了个招呼,便又取回了二者的魂魄;(2)、被宣布无罪释放者当中,牛魔王本身应该算是一个没有任何后台的“民妖”,但仔细考察不难发现,在此之前,其子红孩儿,已经被观音收编为身边的工作人员了。所以,严格说来,他多多少少也还算是一个官妖(这也包括红孩儿的母亲铁扇公主、红孩儿的叔叔如意真仙。至于牛魔王的小情人,那位玉面狐狸,因为天宫也反对包二奶,所以被毫不留情地处以死刑)。
                 
  至于那几位被领导看中,而死罪既免又被领导收编的民妖,只能算是他们前生修福,今生行了狗尿运。
  当然,只简单地分析社会关系,而不考察这些妖犯罪行的轻重,很可能会有失偏颇:也许那些被无罪释放“官妖”,其被释放的原因并非由于后台强硬,而因为他们本身便是奉公守法的良妖,或者,只不过犯了一些可以忽略不计的小过错;而那些“民妖”被就地处决,不是因为没有后台,而是因为全都罪大恶极?
                 
  不妨随意取两个案例做个比较:“民妖”中,车迟国的虎鹿羊三怪,其最大的罪行,大约就是迫害了国内的和尚,拿那帮和尚们当民工使,一面让他们在修建道观的工地上没命的干活,一面却分文不给工资。此外,倒没有见这几个妖怪吃人,也没见他们奸人妻女,而且,连“是妖怪都想要吃唐僧肉”的这著名定律他们也没遵守,愣是没对白白嫩嫩的唐僧肉产生兴趣。他们不仅可以被评为奉公守法的先进典型,而且因为他们善于呼风唤雨,让车迟国变得风调雨顺,从而使该国农业增产农民增收。尽管贡献巨大,但虎鹿羊三怪最后全都被悟空判处了死刑。
                 
  “官妖”中,为了达到占有狮驼国的目的,那位大鹏妖不惜实施残暴的法斯西政策,硬生生将狮驼国原有人类,上至皇帝下至百姓,不分男女老幼,全都杀光吃尽,一个不留!如此罪大恶极罄竹难书之辈,却毫发无损地被悟空上级部门的领导如来佛祖领回家了事!
                 
  从出资性质来看,那些犯罪集团中,除了官妖、民妖之外,还有些团伙的性质属于公私合营。譬如,迷惑比丘国国王以达到颠覆该国政权的二位妖怪,就是一个由官妖与民妖组成的小团体。其中,主谋犯白鹿精是寿星老仙的司机,而另一个从犯白面狐狸,却是一个纯粹的民妖。白面狐狸以白鹿精的授意下,以色相勾引比丘国王,相当于白鹿精对国王进行性贿赂的“礼品”。而悟空对两位犯罪嫌疑人处决的结果却是:主犯白鹿精由其主人寿星老仙带回天宫,而从犯白面狐狸却被当场击毙。击毙了不算,八戒还趁机又往那死尸身上狠打了一钯。用八戒自己的话说,这就叫做“我老猪一生好打死蛇”!(八戒在击杀“红鳞大蟒”时的现场发言)。与此相类似的是,每一个官妖被其主人带走之后,悟空的除妖小组便跳进那些妖精们的豪宅里,舞弄起他们正义的棒和钯,砍瓜切菜般地了解掉那些剩余的协从犯们的罪恶的生命!

    现在,我们终于探索出悟空执法的规律了,知道了知道哪些妖精该死,哪些妖怪可活。该死的,不是那些罪大恶极者,也不是那些贪污纳贿的主谋犯,而是那些没有身份、没有背景的民妖!而平安无事的,永远是那些有官场背景的官妖!
                 
  表面上看,悟空在西行路上的降妖除魔的行为,大多都是在徇私枉法。但事物的矛盾性要求我们,也应该站在悟空角度,对他的执法精神表示足够的理解:第一,从客观上看,他也消灭了不少妖怪;第二,他之所以每遇一个官妖,都是上天入地地去寻找这些妖怪主人,也就是悟空的上级部门的领导,然后在领导的求情下释放了这些妖怪。主观上,悟空也的确有他不得已的苦衷:他被天宫下放基层锻炼,能否重新回到天宫提拔任用,多少也得取决于这些各部门的领导啊。想想,每年的年终考核和民主评议,都掌握在这些领导的手中呢。何况,《天宫公务员法》有明确的规定:凡是上级领导,都是正确的,作为下级,应该无条件服从上级的一切决策。
                 
  总而言之,在西行取经的途中,为完成自己降妖除魔的份内之职,悟空已经做出了最大的努力。这种努力可以从两个方面理解:首先,他尽可能在力所能及的范围内保持了正义的纯洁性,比如说,他成功地消灭了一些危害百姓的妖怪们,保护了百姓的利益;其次,他尽可能在自己的权力范围内保护了上级领导的利益。如,他成功地将所有领导身边的工作人员毫发无损地安全送回了领导身边。领导也是人嘛,领导的利益也必须保护。要成为一个合格的公务员,就必须好好领悟悟空这种从两方面尽力的良苦用心,只有揣摩好学习好悟空的这种执法精神,才会顺利到达西天完成“取经”大业。

系统分类: 自由话题   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(139)
发表于:2008-9-22 16:21:12
标签:run  time  libary  

1

C Run-Time Library的理解

C Run-Time Library的理解

注: 以下内容部分引自CSND中相关讨论的帖子,仅供参考, 共同学习哈
***************************************
1)运行时库就是   C   run-time   library,是   C   而非   C++   语言世界的概念:取这个名字就是因为你的   C   程序运行时需要这些库中的函数.


2)C   语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等);所以,C   语言内核开发出来之后,Dennis   Ritchie   和   Brian   Kernighan   就用   C   本身重写了   90%   以上的   UNIX   系统函数,并且把其中最常用的部分独立出来,形成头文件和对应的   LIBRARY,C   run-time   library   就是这样形成的。


3)随后,随着   C   语言的流行,各个   C   编译器的生产商/个体/团体都遵循老的传统,在不同平台上都有相对应的   Standard   Library,但大部分实现都是与各个平台有关的。由于各个   C   编译器对   C   的支持和理解有很多分歧和微妙的差别,所以就有了   ANSI   C;ANSI   C   (主观意图上)详细的规定了   C   语言各个要素的具体含义和编译器实现要求,引进了新的函数声明方式,同时订立了   Standard   Library   的标准形式。所以C运行时库由编译器生产商提供。至于由其他厂商/个人/团体提供的头文件和库函数,应当称为第三方   C   运行库(Third   party   C   run-time   libraries)。


4)C   run-time   library里面含有初始化代码,还有错误处理代码(例如divide   by   zero处理)。你写的程序可以没有math库,程序照样运行,只是不能处理复杂的数学运算,不过如果没有了C   run-time库,main()就不会被调用,exit()也不能被响应。因为C   run-time   library包含了C程序运行的最基本和最常用的函数。


5)到了   C++   世界里,有另外一个概念:Standard   C++   Library,它包括了上面所说的   C   run-time   library   和   STL。包含   C   run-time   library   的原因很明显,C++   是   C   的超集,没有理由再重新来一个   C++   run-time   library.   VC针对C++   加入的Standard   C++   Library主要包括:LIBCP.LIB,   LIBCPMT.LIB和   MSVCPRT.LIB


6)Windows环境下,VC提供的   C   run-time   library又分为动态运行时库和静态运行时库。
动态运行时库主要是DLL库文件msvcrt.dll(or   MSVCRTD.DLL   for   debug   build),对应的Import   library文件是MSVCRT.LIB(MSVCRTD.LIB   for   debug   build)
静态运行时库(release版)对应的主要文件是:
LIBC.LIB   (Single   thread   static   library,   retail   version)
LIBCMT.LIB   (Multithread   static   library,   retail   version)
msvcrt.dll提供几千个C函数,即使是像printf这么低级的函数都在msvcrt.dll里。其实你的程序运行时,很大一部分时间时在这些运行库里运行。在你的程序(release版)被编译时,VC会根据你的编译选项(单线程、多线程或DLL)自动将相应的运行时库文件   (libc.lib,libcmt.lib或Import   library   msvcrt.lib)链接进来。
编译时到底哪个C   run-time   library联入你的程序取决于编译选项:
/MD,   /ML,   /MT,   /LD       (Use   Run-Time   Library)
你可以VC中通过以下方法设置选择哪个C   run-time   library联入你的程序:
To   find   these   options   in   the   development   environment,   click   Settings   on   the   Project   menu.   Then   click   the   C/C++   tab,   and   click   Code   Generation   in   the   Category   box.   See   the   Use   Run-Time   Library   drop-down   box.
从程序可移植性考虑,如果两函数都可完成一种功能,选运行时库函数好,因为各个   C   编译器的生产商对标准C   Run-time   library提供了统一的支持.

系统分类: 软件开发   |    用户分类: 无分类    |    来源: 转贴

评论(0) | 阅读(227)
发表于:2008-9-10 13:40:19
标签:verilog  

2

学verilog的可以好好看看

学verilog的可以好好看看!- -
javie 发表于 1/9/2006 10:18:40 AM EDA 技术 ←返回版面 按此给该网友发送邮件 按此察看该网友的资料 按此把文章加入收藏夹


规范很重要

   工作过的朋友肯定知道,公司里是很强调规范的,特别是对于大的设计(无论软件
还是硬件),不按照规范走几乎是不可实现的。逻辑设计也是这样:如果不按规范做的
话,过一个月后调试时发现有错,回头再看自己写的代码,估计很多信号功能都忘了,
更不要说检错了;如果一个项目做了一半一个人走了,接班的估计得从头开始设计;如
果需要在原来的版本基础上增加新功能,很可能也得从头来过,很难做到设计的可重用
性。

  


在逻辑方面,我觉得比较重要的规范有这些:
   1.设计必须文档化。要将设计思路,详细实现等写入文档,然后经过严格评审通过
后才能进行下一步的工作。这样做乍看起来很花时间,但是从整个项目过程来看,绝对
要比一上来就写代码要节约时间,且这种做法可以使项目处于可控、可实现的状态。

   2.代码规范。
   a.设计要参数化。比如一开始的设计时钟周期是30ns,复位周期是5个时钟周期,我
们可以这么写:
         parameter  CLK_PERIOD = 30;
         parameter  RST_MUL_TIME = 5;
         parameter  RST_TIME = RST_MUL_TIME * CLK_PERIOD;
         ...
         rst_n = 1'b0;
         # RST_TIME rst_n = 1'b1;
         ...
         # CLK_PERIOD/2 clk <= ~clk;
    如果在另一个设计中的时钟是40ns,复位周期不变,我们只需对CLK_PERIOD进行重
新例化就行了,从而使得代码更加易于重用。

   b.信号命名要规范化。
   1) 信号名一律小写,参数用大写。
   2) 对于低电平有效的信号结尾要用_n标记,如rst_n。
   3) 端口信号排列要统一,一个信号只占一行,最好按输入输出及从哪个模块来到哪
个模块去的关系排列,这样在后期仿真验证找错时后  方便很多。如:
      module a(
               //input
               clk,
               rst_n,   //globle signal
               wren,
               rden,
               avalon_din,  //related to avalon bus
               sdi,         //related to serial port input
               //output
               data_ready,
               avalon_dout, //related to avalon bus
               ...
              );
      4) 一个模块尽量只用一个时钟,这里的一个模块是指一个module或者是一个en
tity。在多时钟域的设计中涉及到跨时钟域的设计中最好有专门一个模块做时钟域的隔
离。这样做可以让综合器综合出更优的结果。
      5) 尽量在底层模块上做逻辑,在高层尽量做例化,顶层模块只能做例化,禁止
出现任何胶连逻辑(glue logic),哪怕仅仅是对某个信号取反。理由同上。
      6) 在FPGA的设计上禁止用纯组合逻辑产生latch,带D触发器的latch的是允许的
,比如配置寄存器就是这种类型。
      7) 一般来说,进入FPGA的信号必须先同步,以提高系统工作频率(板级)。
       所有模块的输出都要寄存器化,以提高工作频率,这对设计做到时序收敛也
是极有好处的。
      9) 除非是低功耗设计,不然不要用门控时钟--这会增加设计的不稳定性,在要
用到门控时钟的地方,也要将门控信号用时钟的下降沿 打一拍再输出与时钟相与。
               clk_gate_en      --------                    ----
              -----------------|D     Q |------------------|     \ gate_clk
_out
                               |        |         ---------|      )--------
-
                        ------o|>       |         |        |     /
                clk    |       --------           |         ----
              ------------------------------------
      10)禁止用计数器分频后的信号做其它模块的时钟,而要用改成时钟使能的方式
,否则这种时钟满天飞的方式对设计的可靠性极为不利,也大大增加了静态时序分析的
复杂性。如FPGA的输入时钟是25M的,现在系统内部要通过RS232与PC通信,要以rs232_
1xclk的速率发送数据。
        不要这样做:
        always (posedge rs232_1xclk or negedge rst_n)
        begin
            ...
        end
        而要这样做:
        always (posedge clk_25m or negedge rst_n)
        begin
            ...
            else if ( rs232_1xclk == 1'b1 )
            ...
        end
      11)状态机要写成3段式的(这是最标准的写法),即
         ...
         always @(posedge clk or negedge rst_n)
         ...
             current_state <= next_state;
         ...
         always @ (current_state ...)
         ...
         case(current_state)
               ...
               s1:
                  if ...
                    next_state = s2;
               ...
         ...
         always @(posedge clk or negedge rst_n)
         ...
             else
                a <= 1'b0;
                c <= 1'b0;
                c <= 1'b0;            //赋默认值
                 case(current_state)
                     s1:
                         a <= 1'b0;   //由于上面赋了默认值,这里就不用再对b
、c赋值了(b、c在该状态为0,不会产生锁存器,下同)
                     s2:
                         b <= 1'b1;
                     s3:
                         c <= 1'b1;
                     default:
                     ...
        ...

      3.ALTERA参考设计准则
       1) Ensure Clock, Preset, and Clear configurations are free of glitch
es.
       2) Never use Clocks consisting of more than one level of combinatori
al logic.
       3) Carefully calculate setup times and hold times for multi-Clock sy
stems.
       4) Synchronize signals between flipflops in multi-Clock systems when
the setup and hold time requirements cannot be met.
       5) Ensure that Preset and Clear signals do not contain race conditio
ns.
       6) Ensure that no other internal race conditions exist.
       7) Register all glitch-sensitive outputs.
        Synchronize all asynchronous inputs.
       9) Never rely on delay chains for pin-to-pin or internal delays.
       10)Do not rely on Power-On Reset. Use a master Reset pin to clear al
l flipflops.
       11)Remove any stuck states from state machines or synchronous logic.

    其它方面的规范一时没有想到,想到了再写,也欢迎大家补充。


====================================================================================
时序是设计出来的
   我的boss有在华为及峻龙工作的背景,自然就给我们讲了一些华为及altera做逻辑
的一些东西,而我们的项目规范,也基本上是按华为的那一套去做。在工作这几个月中
,给我感触最深的是华为的那句话:时序是设计出来的,不是仿出来的,更不是湊出来
的。

   在我们公司,每一个项目都有很严格的评审,只有评审通过了,才能做下一步的工
作。以做逻辑为例,并不是一上来就开始写代码,而是要先写总体设计方案和逻辑详细
设计方案,要等这些方案评审通过,认为可行了,才能进行编码,一般来说这部分工作
所占的时间要远大于编码的时间。

   总体方案主要是涉及模块划分,一级模块和二级模块的接口信号和时序(我们要求
把接口信号的时序波形描述出来)以及将来如何测试设计。在这一级方案中,要保证在
今后的设计中时序要收敛到一级模块(最后是在二级模块中)。什么意思呢?我们在做
详细设计的时候,对于一些信号的时序肯定会做一些调整的,但是这种时序的调整最多
只能波及到本一级模块,而不能影响到整个设计。记得以前在学校做设计的时候,由于
不懂得设计时序,经常因为有一处信号的时序不满足,结果不得不将其它模块信号的时
序也改一下,搞得人很郁闷。

   在逻辑详细设计方案这一级的时候,我们已经将各级模块的接口时序都设计出来了
,各级模块内部是怎么实现的也基本上确定下来了。

   由于做到这一点,在编码的时候自然就很快了,最重要的是这样做后可以让设计会
一直处于可控的状态,不会因为某一处的错误引起整个设计从头进行。


   版权所有,未经作者允许,禁止用于商业性质的转载;如对此文有疑问或想给作者
提建议请给作者发email:wangdian@tom.com  




EDA论坛 版权所有,严禁拷贝! 转载请联系bbs@edacn.net

=============================================================================================
如何提高电路工作频率

   对于设计者来说,我们当然希望我们设计的电路的工作频率(在这里如无特别说明
,工作频率指FPGA片内的工作频率)尽量高。我们也经常听说用资源换速度,用流水的
方式可以提高工作频率,这确实是一个很重要的方法,今天我想进一步去分析该如何提
高电路的工作频率。

   我们先来分析下是什么影响了电路的工作频率。

   我们电路的工作频率主要与寄存器到寄存器之间的信号传播时延及clock skew有关
。在FPGA内部如果时钟走长线的话,clock skew很小,基本上可以忽略, 在这里为了简
单起见,我们只考虑信号的传播时延的因素。

   信号的传播时延包括寄存器的开关时延、走线时延、经过组合逻辑的时延(这样划
分或许不是很准确,不过对分析问题来说应该是没有可以的),要提高电路的工作频率
,我们就要在这三个时延中做文章,使其尽可能的小。

   我们先来看开关时延,这个时延是由器件物理特性决定的,我们没有办法去改变,
所以我们只能通过改变走线方式和减少组合逻辑的方法来提高工作频率。

   1.通过改变走线的方式减少时延。
   以altera的器件为例,我们在quartus里面的timing closure floorplan可以看到有
很多条条块块,我们可以将条条块块按行和按列分,每一个条块代表1个LAB,每个LAB里
有8个或者是10个LE。它们的走线时延的关系如下:同一个LAB中(最快) < 同列或者同
行 < 不同行且不同列。
   我们通过给综合器加适当的约束(不可贪心,一般以加5%裕量较为合适,比如电路
工作在100Mhz,则加约束加到105Mhz就可以了,贪心效果反而不好,且极大增加综合时
间)可以将相关的逻辑在布线时尽量布的靠近一点,从而减少走线的时延。(注:约束
的实现不完全是通过改进布局布线方式去提高工作频率,还有其它的改进措施)

   2.通过减少组合逻辑的减少时延。
   上面我们讲了可以通过加约束来提高工作频率,但是我们在做设计之初可万万不可
将提高工作频率的美好愿望寄托在加约束上,我们要通过合理的设计去避免出现大的组
合逻辑,从而提高电路的工作频率,这才能增强设计的可移植性,才可以使得我们的设
计在移植到另一同等速度级别的芯片时还能使用。
   我们知道,目前大部分FPGA都基于4输入LUT的,如果一个输出对应的判断条件大于
四输入的话就要由多个LUT级联才能完成,这样就引入一级组合逻辑时延,我们要减少组
合逻辑,无非就是要输入条件尽可能的少,,这样就可以级联的LUT更少,从而减少了组
合逻辑引起的时延。
   我们平时听说的流水就是一种通过切割大的组合逻辑(在其中插入一级或多级D触发
器,从而使寄存器与寄存器之间的组合逻辑减少)来提高工作频率的方法。比如一个32
位的计数器,该计数器的进位链很长,必然会降低工作频率,我们可以将其分割成4位和
8位的计数,每当4位的计数器计到15后触发一次8位的计数器,这样就实现了计数器的切
割,也提高了工作频率。
   在状态机中,一般也要将大的计数器移到状态机外,因为计数器这东西一般是经常
是大于4输入的,如果再和其它条件一起做为状态的跳变判据的话,必然会增加LUT的级
联,从而增大组合逻辑。以一个6输入的计数器为例,我们原希望当计数器计到111100后
状态跳变,现在我们将计数器放到状态机外,当计数器计到111011后产生个enable信号
去触发状态跳变,这样就将组合逻辑减少了。

   上面说的都是可以通过流水的方式切割组合逻辑的情况,但是有些情况下我们是很
难去切割组合逻辑的,在这些情况下我们又该怎么做呢?

   状态机就是这么一个例子,我们不能通过往状态译码组合逻辑中加入流水。如果我
们的设计中有一个几十个状态的状态机,它的状态译码逻辑将非常之巨大,毫无疑问,
这极有可能是设计中的关键路径。那我们该怎么做呢?还是老思路,减少组合逻辑。我
们可以对状态的输出进行分析,对它们进行重新分类,并根据这个重新定义成一组组小
状态机,通过对输入进行选择(case语句)并去触发相应的小状态机,从而实现了将大的
状态机切割成小的状态机。在ATA6的规范中(硬盘的标准),输入的命令大概有20十种
,每一个命令又对应很多种状态,如果用一个大的状态机(状态套状态)去做那是不可
想象的,我们可以通过case语句去对命令进行译码,并触发相应的状态机,这样做下来
这一个模块的频率就可以跑得比较高了。

   总结:提高工作频率的本质就是要减少寄存器到寄存器的时延,最有效的方法就是
避免出现大的组合逻辑,也就是要尽量去满足四输入的条件,减少LUT级联的数量。我们
可以通过加约束、流水、切割状态的方法提高工作频率。

===================================================================================
做逻辑的难点在于系统结构设计和仿真验证
   刚去公司的时候BOSS就和我讲,做逻辑的难点不在于RTL级代码的设计,而在于系统
结构设计和仿真验证方面。目前国内对可综合的设计强调的比较多,而对系统结构设计
和仿真验证方面似乎还没有什么资料,这或许也从一个侧面反映了国内目前的设计水平
还比较低下吧。

   以前在学校的时候,总是觉得将RTL级代码做好就行了,仿真验证只是形式而已,所
以对HDL的行为描述方面的语法不屑一顾,对testbench也一直不愿意去学--因为觉得画
波形图方便;对于系统结构设计更是一点都不懂了。

   到了公司接触了些东西才发现完全不是这样。

   其实在国外,花在仿真验证上的时间和人力大概是花在RTL级代码上的两倍,现在仿
真验证才是百万门级芯片设计的关键路径。仿真验证的难点主要在于怎么建模才能完全
和准确地去验证设计的正确性(主要是提高代码覆盖),在这过程中,验证速度也是很
重要的。

   验证说白了也就是怎么产生足够覆盖率的激励源,然后怎么去检测错误。我个人认
为,在仿真验证中,最基本就是要做到验证的自动化。这也是为什么我们要写testbenc
h的原因。在我现在的一个设计中,每次跑仿真都要一个小时左右(这其实算小设计)。
由于画波形图无法做到验证自动化,如果用通过画波形图来仿真的话,一是画波形会画
死(特别是对于算法复杂的、输入呈统计分布的设计),二是看波形图要看死,三是检
错率几乎为零。

   那么怎么做到自动化呢?我个人的水平还很有限,只能简单地谈下BFM(bus funct
ion model,总线功能模型)。

   以做一个MAC的core为例(背板是PCI总线),那么我们需要一个MAC_BFM和PCI_BFM
及PCI_BM(PCI behavior model)。MAC_BFM的主要功能是产生以太网帧(激励源),随
机的长度和帧头,内容也是随机的,在发送的同时也将其复制一份到PCI_BM中;PCI_BFM
的功能则是仿PCI总线的行为,比如被测收到了一个正确帧后会向PCI总线发送一个
请求,PCI_BFM则会去响应它,并将数据收进来;PCI_BM的主要功能是将MAC_BFM发送出
来的东西与PCI_BFM接收到的东西做比较,由于它具有了MAC_BFM的发送信息和PCI_BFM的
接收信息,只要设计合理,它总是可以自动地、完全地去测试被测是否工作正常,
从而实现自动检测。

   华为在仿真验证方面估计在国内来说是做的比较好的,他们已建立起了比较好的验
证平台,大部分与通信有关的BFM都做好了,听我朋友说,现在他们只需要将被测放
在测试平台中,并配置好参数,就可以自动地检测被测功能的正确与否。

   在功能仿真做完后,由于我们做在是FPGA的设计,在设计时已经基本保证RTL级代码
在综合结果和功能仿真结果的一致性,只要综合布局布线后的静态时序报告没有违反时
序约束的警告,就可以下到板子上去调试了。事实上,在华为中兴,他们做FPGA的设计
时也是不做时序仿真的,因为做时序仿真很花时间,且效果也不见得比看静态时序分析
报告好。

   当然了,如果是ASIC的设计话,它们的仿真验证的工作量要大一些,在涉及到多时
钟域的设计时,一般还是做后仿的。不过在做后仿之前,也一般会先用形式验证工具和
通过静态时序分序报告去查看有没有违反设计要求的地方,这样做了之后,后仿的工作
量可以小很多。

   在HDL语言方面,国内语言很多人都在争论VHDL和verilog哪个好,其实我个人认为
这并没有多大的意义,外面的大公司基本上都是用verilog在做RTL级的代码,所以还是
建议大家尽量学verilog。在仿真方面,由于VHDL在行为级建模方面弱于verilog,用VH
DL做仿真模型的很少,当然也不是说verilog就好,其实verilog在复杂的行为级建模方
面的能力也是有限的,比如目前它还不支持数组。在一些复杂的算法设计中,需要高级
语言做抽象才能描述出行为级模型。在国外,仿真建模很多都是用System C和E语言,用
verilog的都算是很落后的了,国内华为的验证平台好像是用System C写。

   在系统结构设计方面,由于我做的设计还不够大,还谈不上什么经验,只是觉得必
须要具备一些计算机系统结构的知识才行。划分的首要依据是功能,之后是选择合适的
总线结构、存储结构和处理器架构,通过系统结构划分要使各部分功能模块清晰,易于
实现。这一部分我想过段时间有一点体会了再和大家分享,就先不误导大家了。

系统分类: CPLD/FPGA   |    用户分类:    |    来源: 转贴

评论(2) | 阅读(453)
发表于:2008-8-30 8:42:40
标签:无标签

1

中国老百姓收入为何赶不上GDP增长?

中国老百姓收入为何赶不上GDP增长?

  中国的GDP这些年增长很快,但为什么老百姓口袋里可以花的钱、生活中感受到的收入和福利状况,跟GDP的增速相比慢很多?今年上半年中国GDP的增长速度从去年的11%,下降到10.2%,很多人害怕了。但如果按其他国家的标准看,10%或者8%仍是非常高的增速,为什么这个数字会让我们害怕?

  改革开放谁得到的好处最多?

 

     先给大家看一组数据,把中国社会分成三个群体:政府(包括中央、省以及地方政府)、城镇居民和农民。在过去的改革开放中,哪个群体得到的好处最多?哪个群体得到的好处相对最少?

     以1995年的100为基数,到2007年国家财政税收总体增长了5.7倍,达到670,平均每年上升16%;城镇居民人均可支配收入在12年里增长了1.6倍,平均每年增长8%;农民人均纯收入增长1.2倍,年均增长6.2%(数据均已去除通胀率,且这里所讲到的收入不包括资产性收入)。如果我们把国家的收入看成一个“大饼”,3个群体中,政府得到的份额最多,农民得到的份额最少。

     我们再看一下资产性财富在政府和社会之间是怎么分配的。据统计,差不多有76%的资产性财富掌握在国家的手里,从这个意义上来说,只有大概1/4的资产性财富在民间。据一些研究机构前几年做的估算,到2006年年底,国有土地的总价值差不多是50万亿元人民币,11.9万家国有企业资产总计约29万亿元人民币,两部分财富加起来,国有资产的价值约79万亿。再来看民间,到2005年年底,全国城镇居民的总资产价值21万亿左右。

     假如国有土地和国有资产,每年按照和GDP一样的速度升值,去年GDP的增长速度是11.4%,2006年年底价值为79万亿元人民币的国有资产增值约9万亿元人民币。去年国有企业的总利润是1.6万亿元人民币,国家收入总计约是10.6万亿,这是去年预算内财政税收5.1万亿元的2倍。而资产性收入加上财政税收,大概是15.7万亿元人民币。

     民间财富多才能带动内需

     中国的社会财富在政府和社会之间这样分配,后果是什么?其中一个重要的后果,是中国GDP虽按8%、9%(甚至更高)的速度增长,但老百姓能够感受到的增长少。原因是民间财富少,大家知道对于任何一个家庭,每年可花的收入包括两部分:第一部分是劳动收入和工资收入;第二部分是资产性财富升值收入。在美国,一般资产增长的速度都是GDP增速的两倍左右。但中国老百姓享受的只有劳动收入。很多经济学家讲我们必须改变中国出口导向型的增长方式,必须通过内需增长带动国民经济发展,但是财富升值的收益没法流入老百姓手里,他们如何消费?

     我们再看一下,政府代替老百姓拥有资产、获取更多的国民收入,其结果是什么。我想特别强调的是,不管是苏联还是计划经济时代的中国,或今天的中国,都有一个共同特点,那就是非常重视重工业、制造业,而轻视第三产业和轻工业。大家稍微想像一下,国家通过所有制掌握财富,最后的结果肯定会重视工业项目和基础设施,而由老百姓掌握财富的支配权和消费权时,最后会转变成对服务业的需求。原因是作为政府官员,一般会把钱花在看得见、摸得着的项目上,这些往往是基础设施和大的工业设施所具备的特征。过去6年我都会带耶鲁的学生到中国参观,最让他们感动就是宝钢的工厂,那么多的机械、滚烫发红的钢条,很了不起,这看得见、摸得着,给学生留下的印象最深。

     官员如果把钱花在看不见、摸不着的教育、医疗上,百姓可以感受到,但是上一级领导看不见。所以大家追求的目标都是看得见的“形象工程”。但是,一个社会靠投资、再投资,而不是消费拉动增长是不能长久的。因为最后生产了这么多东西由谁来买?如果3/4的生产性财富都掌握在国家的手里,必然的结果就是不断往工业里一投再投,往基础设施上一投再投。现在已经到了非转型不可的时候了。

  作者:陈志武 美国耶鲁大学金融经济学教授

系统分类: 自由话题   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(138)
234567下一页总共 , 当前 /