I want to be a complete engineer - technical genius and sensitive humanist all in one!

Tuesday, March 24, 2009

再告诉你一个中国CPI上涨的秘密

作者陶显芳,职务:康佳集团股份有限公司彩电技术开发中心总体技术设计所所长 高级工程师。
专家背景:毕业于大连理工大学,1988年经电子部选拔,由国家经委派送,德国企业界资助(中德政府签订的150个专家学者到德进修学习项目),曾到过德国 CDC(CAR DUISBERG CENTER)和SIEMENS等大学和企业进修学习(18个月)。长期从事电子技术设计工作:曾参与开发651甲、970、713雷达,曾荣获中国科学大会授予科学进步奖;后主要从事彩色电视机技术开发工作(深圳康佳集团股份公司),现为康佳公司资深高级工程师,康佳彩霸系列电视机技术开发主任设计师,曾主持开发多款电视。 现为康佳集团股份有限公司彩电技术开发中心总体技术设计所所长/高级工程师。以下是其发表的一篇文章,我予以转载。

今天早上,我打开电视机收看中央电视台新闻节目,不经意地听到了中国政府相关部门公布2008年2月份的CPI指数已经上涨到8.7%,创近12年来新高。其中,城市上涨8.5%,农村上涨9.2%;食品价格上涨23.3%,非食品价格上涨1.6%;消费品价格上涨10.9%,服务项目价格上涨2.0%。居民消费价格总水平比1月份上涨2.6%。这个数字远远高出了一些经济权威专家的预期估计,例如:清华大学的有关专家预测,2008年4个季度CPI的涨幅分别为7.60%、7.68%、7.52%、6.54%。这并不奇怪,因为很多人都害怕被戴上唱衰中国的帽子。

我在网上也搜索了最近几个月来一些中国政府官员对中国经济发展的预测报告,除了周小川大声喊,中行还要加息,还要加息以外;其他官员的发言全是忽悠中国老百姓的话。例如,发改委主任马凯声称:宏观调控失效论不属实,年内4.8%的CPI调控目标一定能实现。

试问,现在连CPI指数的最高点还没有看到,光靠周小川一个人喊银行加息,中国的CPI就可以降到4.8%以下了,好像是在说梦吧。

中国为什么会发生通货膨胀?我想政府官员要比我们更清楚。一直以来政府把中国的GPD梦做得太完美了,不但忽悠了老百姓,还忽悠了自己。

很多人都以为CPI上涨是由猪肉提价引起的,去年猪肉在猪年成了中国物价上涨的指标。2007年5月,中国36个大中城市猪肉价格突然暴涨。北京大钟寺的猪肉批发价从4月的12.3元/千克涨到15.6元/千克,同比上涨38%。尽管政府采取了多种措施,猪肉价格仍像股市一样,几度冲高但都没有回落。到了年底再次连续4周持续走高,有的省份肉价上涨超过200%,2007年年底,大钟寺猪肉批发价已经接近20元/千克。深圳的猪肉更贵,2007年年底,已经卖到接近40元/千克。

2008年,中国的猪肉以及其它食品的价格上涨得更厉害,政府官员坐不住了,再次出来进行解释,这是由于中国今年年初遇到大雪灾,造成一定的供应紧张,因此,价格上涨是暂时的。

他们当然认为是暂时的,因为,产生通货膨胀的前期准备时间太长了,很难有人看得出,中国哪一天会出现通货膨胀。但人们要知道,通货膨胀往往是人为地制造的,不过制造通货膨胀的人连自己也不知道,通货膨胀会在哪一天发生。通货膨胀是多方应力产生的结果,一旦发生了通货膨胀就很难收拾。

为什么会产生通货膨胀?我认为中国的这次通货膨胀与单纯的物价上升并不是一回事,这次通货膨胀完全是因为过量发行货币所致。

单纯的物价上涨一般是气候性的,或称有一定的偶然性,即当某种商品紧缺的时候,可能会引起价格上涨,但就平均而言价格是稳定的,因为,当某种商品的价格上涨后,必然也会引起另一种商品的价格下降,或者同一种商品待季节性价格上涨过后,价格必然会下降,因为老百姓手中钱的数目与商品的数目就平均而言是对应的。

根据有关资料,从1999年底到2007年底,我国发行的广义货币从12万多亿元增长到37.7万多亿元;各项贷款从9万多亿元增长到25万多亿元;外汇储备从1546.75亿美元增长到15282.49亿美元,正好增一长了10倍。而1999年与2007年的GDP总量分别为8.9677万亿与23.5万亿元,即货币发行量远远大于GDP的总量。因此,可以说,银行贷款和外汇储备快速增长使货币超量发行,是产生通货膨胀的主要原因。

我们知道,社会财富是有限的,财富不是靠政府发行货币创造出来的,正常的货币应该是代表国家创造出多少财富的标签,如果政府另外再多发行货币,货币就会贬值,相当于政府再额外向老百姓多收一次人头税。这也是政府最不乐意看到的结果,因为,货币贬值对低收入者会造成生活困难,当他们的忍耐达到一定程度的时候,不满情绪就会释放,可能会造成社会混乱。例如,2007年11月27日,东莞后街镇就发生过爱高电子厂几千工人,因不满工资待遇过低罢工上街示威游行事件。虽然诱发事件的原因可能很多,但工人生活水平低一定是其原因之一。

另外,大家不要以为是政府多发行货币就像马歇尔计划那样每个人都有一份,也不要以为只是政府把人民币存放在银行里给老百姓到银行取存款时供流通使用;这里所谓的发行货币是指政府利用自己的特权偷偷地向老百姓收取人头税,然后跟老百姓抢购东西。

如:建政府大楼,建国家剧院,建CCTV大厦、借奥运机会大兴土木建设,购买单价上千万元一辆的奥运概念车等等,这些都属于非生产性建设投资项目;当然,也有一些是属于生产性建设的项目投资,如:三峡电站、青藏铁路等建设,这些项目投资的钱很多都不是通过正常税收得来的,而是根据某领导的意见就可以进行银行拨款,这些拨款如果欠着,就叫做政府赤字,如果不想欠账,就干脆授权银行发行国债或开动印钞机印刷钞票,两种效果完全一样,只不过赤字是老百姓用来考核政府的经济指标,这个对于中国政府来说,并不一定适用。

如果政府发行货币是用来投资,建工厂,修水利,植树造林等,虽然在短期内也会产生通货膨胀,但它在短期内可以扩大就业,而将来便可成为财富增长的源泉,最终会抑制通货膨胀。也就是说,单纯的物价上升不能说成是通货膨胀的主要原因,只有政府另外印钞票向老百姓抢购东西时出现的这种通货膨胀,才会令人恶心,或把其称之为恶性通货膨胀。即:通货膨胀式的抢购又可分为非生产性的和生产性的,非生产性质的通货膨胀对老百姓危害最大。

适当地制造一点通货膨胀对刺激经济增长是有一定好处的,因为,通货膨胀对贷款人有好处,即对企业有好处;而对存款人将会带来贬值的损失,这样,就会鼓励大家不要把长期不用的钱存在银行里,而应该用来投资,同时,政府还可以通过收税多赚钱。

例如,你向银行借款100万元,年利率5%,一年后需向银行还100万元的本金和5万元的利息;假设物价一年上涨了10%,你所还的105万元的实际购买能力只有1050000/(1+10%) = 954545(元),因此物价上涨后,你还给银行的本利实际价值反而减少了,而银行借出100万元实际只能收回95万元,反而遭受了损失。当然,银行并不会这么傻,他愿意做这种亏本生意吗?

这就是为什么投资商,特别是房地产商,拼命想向银行贷款的道理。但中国的大多数老百姓都不明白这个道理,他们宁愿把17多万亿的救命钱存在银行里,让房地产商和证券商贷用,还有让政府把它转换成外汇存于国外银行之中。也就是说,通货膨胀不一定全是坏事,对一些人是坏事,而对另一部分人则是好事。

为什么17多万亿元是中国老百姓的救命钱,因为现在中国还没有基本的福利保障制度,而投资环境又很差,不敢自己开工厂办企业或买股票。如果买股票,几乎90%的股民都是要亏本的。所以政府也经常提醒你,买股票有风险,但是你还是要买,因为你不买股票存在银行中的钱同样要贬值。

为什么这么说,因为目前上市的公司全部都是国营企业,国家对国营企业的政策是,企业资产存量不能变,只有增值部份才能是股民的。

这样,不管你花多少钱买股票,你都不可能买不到国营企业的资产,你只能买到一个画饼,只有国营企业增值了你才有份。那要等到什么时候国营企业才能增值,待到国营企业真的增值的时候,增值部份早已被管理者偷空了。你看,那么多国营企业的业绩报告,哪个是真的,还有哪个国营企业的老板年薪不是上百万。读者可以自己查一查,前些天深圳商报上还公开报道过好几个中央企业老板的年薪,都是过百万的;其中一个年薪118万元,但他还认为与国外比,他拿得还算是少了。还有那些商业银行,保险公司,以及合资企业的老板年薪更高,最高年薪达2500万元。

一个国家要不要制造通货膨胀,或者通货膨胀的程度有多高,完全是由银行来控制的。很多人都以为,银行一定很有钱,实际上这种认为是错误的。其实,中国的银行本身并没有钱,相反,它还产生过好几万亿元的烂账,不过,这不能怪它,那是政府有意的。银行不但是一个赚钱的高手,并且它还是一个制造通货膨胀的优秀工具。为了解释清楚这个道理,我们先从银行赚钱的魔术说起。

设A把100元钱存进银行,银行再把100元贷给B,但B不可能把100元钱全部取走,一般只取走一小部份作为零用,比如说10元,而把剩余的90元仍旧存入银行;这样银行又可以把90元另外贷给C,同样,C只取走一小部份,比如说10元,而把剩余的80元仍旧存入银行;以此类推,银行就可以把余下的钱继续贷给D、E、F...,这样银行的存款就会像几何级数一样增加,100元钱存款就可以放大成好几百元,甚至上千元。因为,用户口袋中的钱与自己存在银行中的钱相比,总是小数。银行就是通过这种以一当百的数字游戏方式来赚钱的。

中国银行就是看到了中国老百姓存在银行中的17多万亿元救命钱很少用,所以他才敢大量地放贷。如果大家同时都到银行把自己的存款取出,银行将要立即倒闭。但中国的银行不用担心会倒闭,因为,中国银行拥有发钞票的权利,只要打个报告,让政府授权,他就可以开动印钞机,大量印制钞票。老百姓拿到新钞票后,就相当于同贷款商一起抢购东西,这样必然会引起物价上涨。所以,通货膨胀就是这样来的。

现在你应该明白了,银行不但是一个“用不完的钱和还不清的债”的赚钱高手,同时它还是一个制造通货膨胀的优秀工具。因此有人说,抢银行不如开银行,开银行才是赚钱的最高境界。

大多数银行都是国家的,特别是中国的银行,因此,全国的经济几乎都被控制在银行手中。但值得注意的是,目前中国的几个商业银行,其中一部分的资产还是负的,相当于银行没有投资一分钱作为资本,而且还欠存户相当多的钱,这是因为很多国营厂的贷款到期后无法归还,长期挂在账上,最后通过债转股的方式变成了银行的资产。

下面我们来分析最近发生通货膨胀的原因。

前面我们已经分析过,存在银行中的钱是可以放大的。如果老百姓17多万亿元的存款长时间不动,银行就可以把它放大成几百亿元来放贷,因此,银行再多发行37.7万亿货币几次,供贷款用也不会出问题。但实际上老百姓的17多万亿元的存款不可能是永远不动的;另外,还有很多国营企业一直存在亏损不能还贷,以及一些固定资产投资占用贷款的周期很长;因此,到底放大倍数是多少,应该也是个机密问题。

我不是经济学家,也不是银行工作者,这一方面的详细数据我们无法知道。不过我们通过观察分析还是可以找出很多原因。

原因之一,最近国家准备把四个商业银行上市卖掉,政府有意让股票价格上涨,暗地里通过银行和串通资金会,号召全国的老百姓参加炒股。在股票最低迷的时候,上市公司流通股的价值大约只有2万多亿,资产大约10万多亿元;到去年股票升到最高点的时候,流通股的价值一下子上升到9万多亿元,资产高达21.09万多亿元。那么,增加的7万多亿元资金肯定是老百姓从银行中取出来的钱,并且还有几万亿元的预备金,同样也是从银行中取出来的钱。

虽然这些钱的大多数还是留在银行里,但由于这些钱的流动性增大,银行也必须要预留足够的贮备金。也就是说,政府为了防止银行倒闭,必须授权银行开动印钞机印钱,从而使货币快速贬值。

另外,老百姓炒股,就是变相赌钱。我们知道,在赌场里的人,一般都不会把钞票当成钱来看待,无论是赢家或者输家,赌红了眼的赌徒,他们往往都会失去理智,都要比平时舍得花钱,从而增加了消费。同时,全民炒股还会使人心虚无缥缈,无心从事生产,使生产荒芜,造成供应紧张。

原因之二,中国的投资环境变得越来越差,原来很多投资商都是把钱投到某一类企业,特别是加工型企业,当这些加工型企业赚钱变得越来越艰难以后,他们必然会把资产或资金转移,使流动资金去向不明,同样也会增加银行的贮备金,即:银行也要开动印钞机印钱。

例如,这几年来,东莞市倒闭的企业就有13000多家;深圳市光2005年就有14139企业已经逾期两年没有参加年检并被吊销营业执照,实际上这些企业早已倒闭。不单是东莞和深圳出现这种情况,其实,温州出现这种情况比东莞、深圳更早;所以,很多人都把温州人称为中国经济发展的候鸟。你看,最早到国外开厂投资的是不是温州人,到山西炒煤的是不是温州人,到北京、上海炒房的是不是温州人。

这些企业倒闭以后,将有很大一部分热钱转移到房地行业,使房地产行业一下子变成最热门的行业。而房地产需要的流动资金更大,使银行预留的贮备金更多。同时,热钱更容易转换成消费,你想,哪些商家谈生意,不都是到高尔夫球俱乐部、高级酒楼、KTV包间等高级消费场所,吃喝玩乐。所以房地产的繁荣,同时也会带动服务行业的繁荣,使消费提高。

不过,房地产的繁荣必须要靠其它行业来带动,如果没有其它行业的支持,房地产业就会变成空中楼阁,它的繁荣也只能是昙花一现。2007年年底的时候,深圳就有超过30多家房地产公司倒闭,估计在中国的其它地方,房地产业的冬天也很快就要来临了。这意味着光有消费,没有其它产业支持的行业很快就要面临崩塌的灾难。

原因之三,自从2003年以后,我国的产品出口数量不断增大,外汇贮备不断增多,到2007年年底,我国的外汇贮备已经超过1.5亿美金,已占世界第一位,并且数目还要继续增长。政府为了填充1.5多万亿美元贸易顺差,必须大量发行国债或印制钞票补偿给这些出口企业,这相当于这些年来,单为填补贸易顺差这一项,政府就需发行十多万亿元的人民币。另一方面,中国大量出口商品也相当于是财富转移,最终会造成国内供应紧张。

根据《中国食品商务网》(2008-03-01 13:51:00)的报道:

自从21世纪开始,直至快速地迈向去年(2007年)以来,中国冷冻甜玉米的出口数量正在大幅度地增加,呈现出巨大的增长潜力。

在2007年里,中国冷冻甜玉米的出口总量,已经达到了32525吨;比其2006年的出口总量24210吨,增加34 %。

而在去年,上述这种产品的出口价值,甚至增长得更多,达到了1420万美元;比2006年970万美元的出口价值,增加了46 %。

可是,在2000年时,中国出口冷冻甜玉米的数量,总共才只有140吨,出口价值仅为177330美元。

在2000年——2007年期间,中国的主要出口市场经历了重大的变化。

早先,中国冷冻甜玉米的主要出口市场,一直只是销往日本而已。

而当今,韩国却已经成为中国冷冻甜玉米这种产品最大的消费国;韩国的进口总量,竟然已经占到中国出口总量的75 %。

到了2007年,中国向韩国出口冷冻甜玉米的数量,就已经达到了24550吨,比2006年的出口总量增加22 %;出口价值是850美元,而在2006年时的出口价值为650万美元。

中国的冷冻甜玉米,除了主要向韩国出口以外(占出口总量的75 %),其余的25 %产品,中国则销往53个其他国家和地区。

香港(特区),是中国内地第二大冷冻甜玉米的主要消费市场,进口的总量达1335吨,占出口总量的4 %;价值为967750美元。

去年(2007年)冷冻甜玉米的贸易总量,出现了最快速的增长(除了加拿大之外)。在数量和价值上,都比上一年增加了7倍之多。

而其他东南亚市场,也都已经成为中国获利的出口国。

在2007年,澳大利亚从中国进口的冷冻甜玉,增加数量颇为显著,总共达840吨,比2006年的进口总量足足增加了5倍;价值达617700美元,同比增加698 %。

与以往若干年对比,如今日本已经成为中国上述产品非常小的市场了,进口呈下滑的趋势。

在2007年,日本从中国进口冷冻甜玉米的数量,锐减到只有710吨,比2006年进口的960吨,下降25 %;价值为782 910美元,少于2006年的105万美元。然而,在2007年里,中国还开拓了其他一些小的出口市场,特别是那些在2年前,还没有从中国进口冷冻甜玉米记录的一些市场。

比如:俄国从中国进口冷冻甜玉米的总量达390吨,而埃及也进口了340吨,它们进口的数量,都比2006年分别增加了172 %和124 %。

鉴于上述这两个国家都是人口众多的国家,因此中国的出口商们,都将会进一步去扩大这些市场的。——以上是《中国食品商务网》的报道。

你看了这个报道以后,不用我再解释,你将会明白:为什么中国的猪肉会提价?为什么中国的食品也会提价?

另外,中国大量商品出口,在一定程度上也是变相为能源出口,因为中国商品的附加值很低。一些金属制品,其消耗能源的比例要占出口产品总成本的50%~70%,其余是劳动力的成本;电子产品也同样消耗很大的能源,如果不是政府对能源价格进行补贴,中国出口商品的价格大部份是亏损的。

中国每创造1美元所消耗的能源是美国的4.3倍、德国和法国的7.7倍、日本的11.5倍。因此,中国出口商品越多,消耗的能源也越多。

那么,在能源日趋紧张的今天,这种商品的大量出口和外汇大量贮备,是否还有价值。我在上一篇文章中已经指出,中国国内的能源价格,煤在6年时间内上涨了3倍,石油和天然气在10内也上涨了3倍。根据凤凰台报道,2008年3月12日国际石油价格每桶已经超越110美金,仅用了一年时间国际石油价格就翻一番。现在,我们国家已经变成了扎扎实实的能源进口大国,每年消耗石油3.3亿吨以上,每年递增15%,而80%以上均需要进口。

试问,如果我们几年前不出口商品,让煤埋在地里,现在是不是更值钱;现在中国用以前出口赚到的外汇进口石油,还能买回我们原来出口能源的数量吗?那么中国的GDP增长到底有多大意义?外汇贮备是否越高越好?

如果认真算起账来,中国的外汇贮备已经被贬值了三倍,即现在中国的外汇贮备的价值,只相当与几年前价值的三分之一。因此,中国大量出口商品和正在继续增长的1.5多万亿美金的外汇贮备才是中国通货膨胀的真正原因。可乐乎!可悲乎!

未来几年,中国出现通货膨胀是不可避免的,因为中国的外汇贮备还要继续增加,但中国的经济绝不会发生崩溃。因为中国银行永远不会倒闭,它会不停地开动印钞机给国营企业输血,只要政府愿意拿出一小部分新钞票来对社会最底层的居民进行生活补贴(但愿政府官员看到这篇文章后,能够这样做),以抵消通货膨胀对居民生活的影响,中国就不会产生动乱。不过,中国的GDP增长就不再是“一枝独秀”了,除非把印钞机生产的产值也统计进去。

那么,为了抑制通货膨胀,中国政府想办法降低外汇贮备不就可以了吗?这个想法未免太天真。如果中国政府放松外汇管理,中国的企业将会大量进行走私;还有大批贪官的资产将会快速转移到国外,每年国家光进口关税,就会损失几千亿元。如果减少出口,GDP将会出现负增长。因此,外汇贮备永远是中国政府的心病,他只能眼睁睁地看着外汇贮备每天都在损失。

网上还有很多外国的评估机构认为中国的GDP实际增长率不到官方公布数字的一半,不知道这个是不是真的,或者他们真的是在唱衰中国,估计这个结论不用等到明年就可以知道结果。

还有,通货膨胀对私人企业来说,可能是一次致命打击,那些没有拿到银行贷款的私人企业,在这次通货膨胀的风暴中一定会纷纷倒闭。这对于红色政权来说,制造一点通货膨胀无疑不是一个好方法,它是消灭私人企业的最好武器。

Monday, March 23, 2009

新手学习FPGA

SMTH上转载的,具体来自哪里没有考究,但感觉说的一些内容还是很有用的.

1:论坛原创很少,基本上是剪刀加浆糊的模式,以推出某某秘籍下载的排行为最高分获得者可以看出论坛气氛对于提高初学者来说,非常不利培养动手好问的习惯!

的确,现在还是没有找到风气和氛围很好的硬件设计论坛,大多论坛都是求文章或者出卖文章,转载之类的,真正讨论技术的还是很少.现在所学还是来自那几本经典的数字设计的书籍和网上找到的资料.

2:你可以忘却,但是不可以不知道原理。硬件和软件不同之处:

一个软件,学习3个月,可以入手搞些小东西,但是3年之后,进步就慢了
一种硬件,学习3个月,可能什么都不会,但是3年之后,就是日进千里。

现实生活中的西药,中药就是这样的特点。

或许稍微有点牵强,在我看来是做软件的不知道硬件的苦,总是说添点这个功能很简单吧.但是做硬件真是很考验人对自己代码的审视能力,需要能预测错误和指定错误.但是同样不要忽视了理论东西的学习,因为做硬件不单单是实现别人现有的东西,还要跳出软件设计思维的限制去发掘硬件实现的潜力.做什么都是需要累积的.

3:人生到处都有一样的东西。你这一生就是要做两件事情

总结归纳---把不一样的东西,变成一样的,把复杂的,变为简单的
推理演绎---就是把你归纳好的一样的东西,或者是系统的原理,推演到各种应用中去。

很有道理的,在编写代码做硬件的间隙,总结自己已经做过的东西是很重要的,一方面可以保持做东西状态和手感的连续性,另外只有在总结中才能发现问题和发现创新之点

4:一个时期,确定一个主题

有人担心,自己的VHDL不行,实际上,这些都是工具,我见过所谓的一些VHDL高手,基本上他们C言语学习的太多,实际上他们C语言也不行。自己写的VHDL自己都不知道生成的东西是否就是自己想要的。

Altera,Xilinx为了推出RTLview,就是将VHDL,Verilog变成一些RTL给使用者核对,可以说,是花了很大的精力,也是他们的核心竞争力所在。但是,有很多人从来不看。

所以,一次确立一个主题,搞通了,就再下一个。

不要贪多和浮躁,做一件事做好,一件事一件事的来

5:主题要分先后!这个非常重要,本末倒置,适得其反!

我小学时候,学习过一篇“洗茶壶”的课文,实际上,当时的老师也没有教导出个原理来。但是现在很多高科技武装的人,就是不会洗茶壶。就是分不清楚,轻重缓急,孰先孰后!效率更不说了。甚至很多人编译后,第一句话就是,这个编译器太臭了!消耗资源太多。可以告诉大家一个小的事实。

Sun工作站上用的Sparc处理器,有开源版的,在2000年左右,消耗资源在10000个以上,而且编译时间很长。而到2003年以后,FPGA的领头羊厂商,已经能将其不经过任何改动,就能编译为6000个左右,而且编译时间缩短不少。工具的领先和超前已经是不容置疑,但是很多人开口就是:我机器太烂,软件太烂,我没有问题!

过去我们谈朋友,先感觉女孩子不错,然后想办法接近,认识,交朋友,了解,结婚,生子,现在的实际上也和我们一样,只是先生子,结婚,了解,交朋友,。。。。就是顺序不同!结果很多就不好说了。

这个例子举的...实际上硬件编译是个很折磨人的东西,当然减少编译次数以及First-Pass的秘诀就是,先动手分析!在去综合,硬件的成功不是试出来的,而是分析之后以依据改正出来的.

6:选择一个背后有强大生态链,或者有很丰富资源的东西来学习。

这里不是说小厂家的不好,也不是说在这里你会一些人家不知道的厂商的东西,你就是物以稀为贵。错!企业,事业,都是需要生态学的!

单不要盲目,在大环境中更不能求异,与团队的协作是很重要的!也要自己心中有秤,明知优劣不能盲从

7:任何事情都是考验投入!

神七上天,不是偶然的,是多年来的投入,投入就是Value。一个10个人编译成的软件工具,和一个500人编译设计的软件工具,投入就是不一样。显然效果就是不一样!

积累和持之以恒是人的试金石

8:想成功加速,就要请个好教练!很多人可能这辈子什么都没有请过教练!好教练真的是很难求,这大概是中国科研环境最大的弊端,现在我的教练只有书本和与师兄以及不知名的高手的讨论中来。

Wednesday, March 18, 2009

CY7C68013 0xC2 启动模式总结


一、CY7C68013枚举与重枚举过程

CY7C68013在上电时,首先由缺省USB设备进行枚举,并把8051固件代码下载到芯片的RAM内;之后8051就会脱离复位并开始执行这些代码,并按照固件代码的内容再一次对设备进行重枚举。再重枚举完成后,对控制端点0的设备请求可由68013的缺省USB设备处理(USBCS中的RENUM位为0),也可由增强型8051的固件代码处理(RENUM1)

上电复位后68013会检查芯片iic总线上是否连接有串行EEPROM,它将读取第一个字节以决定其枚举模式,分如下情况处理:

1. 如果EEPROM 不存在,则用默认PID/VID 启动USB 设备,缺省的USB 设备自动处理

通过控制面板来下载,调试时常用。

2. 如果EEPROM 存在,并且EEPROM 中第一字节是0xC0,后面字节包括用户定制的

PID/VID,则用定制好的PID/VID 来从主机下载固件和加载驱动,此方式为0xC0模式。

3、如果EEPROM 存在,并且EEPROM 中第一字节是0xC2,后续内容包括PID/VID,以及

程序代码,则FX2 EEPROM加载固件,此方式称为“C2 加载模式。

4. 如果FLASH EEPROM 通过地址总线和数据总线扩展(仅128 引脚封装有效),并且

EA=1,则程序从外部空间的0x0000 开始运行。


EEPROM0xC0模式加载EEPROM0xC2模式加载EEPROM


以下详细描述68013 0xC2模式下枚举与重枚举过程。

如果68013检测到一个EEPROM存在,且首字节值为0xC2,则VIDPIDDID、各种USB描述符,及其8051固件代码都有该EEPROM提供,此模式即为0xC2模式,其数据格式如下表:


首字节为0xC2 时,EEPROM中数据格式


上表中前八个字节分别描述了模式标志,VID/PID/DID以及IIC速率配置,从第九个开始为的程序块,每个程序块包括起始地址、数据长度和数据块组成,最后一个字节0x00将写入到CPUCS寄存器(地址是0xE600)中且该数据的最低位必须为0,以使8051 脱离复位。

CYPRESS 提供了hex2bix 来生成“0xC2”格式的*.iic数据用于烧写到EEPROM。执行HEX2BIX.EXE 程序时,需要给程序送入参数。如果我们指定-i,那么程序执行结果会输出iic类型文件。如果我们指定-f 0xC2,那么烧写的程序的第一个字节就是0xC2,这个字节会烧写到EEPROM中的0x0000地址。这个值决定了固件的加载方式,如果为0XC2 则从EEPROM中读取固件程序到FX2RAM空间进行执行。写入这8 个字节之后,根据判断ImageMap的标志位来查找每个块的长度(连续为1 的个数),和这个块的偏移地址(第一个标志为1 的地址),同时注意字节序的问题,请看有关字节序的问题。然后顺序的将块的长度(两个字节),块的定位(两个字节)写入到输出的iic文件中,接着将相应在Image 的数据写入到文件中,然后重复找到ImageMap 的所有块,都是以这种格式写入到输出文件中。(块的数据长度,块的定位,块的数据)。这样即可得到了一个用于烧写EEPROMiic文件,可以看出,iic是二进制数据流文件。


二、烧写EEPROM

IIC文件是一个二进制文件,由HEX文件通过Cypress提供的hex2bix.exe程序转换来。

烧写EEPROM的时候,首先插入设备并确定68013连接的EEPROM没有被烧写过程序,(或者与EEPROM所连接的SDA引脚断开,这种情况下EEPROM已经被烧写过)这样设备才可以作为CYPRESS的默认设备被枚举。然后即可通过控制面板烧写EEPROM

如果EEPROM已经被烧写过,则可以使用下面的方法实现再次烧写:

1。断开EEPROMSDA连接;

2。插入USB设备,打开Control Panel程序,这时作为EEPROM missing68013设备被枚举;

3。这时不要断开USB设备,小心将sda连接上;

4。通过Control Panel eeprom按钮重新烧写,这样可以覆盖原来的程序。只是这种硬件操作比较麻烦,最好在sda之间焊接个开关。


三、典型示例

以下以68013连接ATMEL 24C256 EEPROM来说明完整烧写过程:

8pin 24C256IIC总线接口,容量为256K (32,768 x 8) EEPROM,其管脚描述如下:

连接方式为:A03.3V电源,A1NCGND接地,SCLSDA分别接68013IIC接口,WP接地,VCC接电源即可。此款EEPROM芯片兼容24C51224C1024等。


Tuesday, March 17, 2009

0欧电阻笔记

0欧的电阻基本有以下几个功能:
①做为跳线使用。这样既美观,安装也方便。
②在数字和模拟等混合电路中,往往要求两个地分开,并且单点连接。我们可以用一个0欧的电阻来连接这两个地,而不是直接连在一起。这样做的好处就是,地线被分成了两个网络,在大面积铺铜等处理时,就会方便得多。附带提示一下,这样的场合,有时也会用电感或者磁珠等来连接。
③做保险丝用。由于PCB上走线的熔断电流较大,如果发生短路过流等故障时,很难熔断,可能会带来更大的事故。由于0欧电阻电流承受能力比较弱(其实0欧电阻也是有一定的电阻的,只是很小而已),过流时就先将0欧电阻熔断了,从而将电路断开,防止了更大事故的发生。有时也会用一些阻值为零点几或者几欧的小电阻来做保险丝。不过不太推荐这样来用,但有些厂商为了节约成本,就用此将就了。
④为调试预留的位置。可以根据需要,决定是否安装,或者其它的值。有时也会用*来标注,表示由调试时决定。
⑤作为配置电路使用。这个作用跟跳线或者拨码开关类似,但是通过焊接固定上去的,这样就避免了普通用户随意修改配置。通过安装不同位置的电阻,就可以更改电路的功能或者设置地址。

Thursday, March 12, 2009

USB设备配置-based CY7C68013

在USB协议中,将USB设备作为一个配置、端点和接口的集合。一般采用USB描述符对该USB设备的功能进行描述。USB主机通过读取这些描述符来使该USB 功能设备执行相应的功能,以及产品信息。本文主要描述USB标准设备描述符,包含以下内容【所有示例代码均基于Cypress CY7C68013平台】:
USB 的描述符
设备描述符(Device)
配置描述符(Configuration)
字符串描述符(String)
接口描述符(Interface)
端点描述符(Endpoint)
设备限定描述符(Device_Qualifier)
其他速率配置描述符(Other_Speed_Configuration)


1 USB的描述符
在USB 协议中,USB设备采用标准的USB描述符来说明。这些描述符包括设备描述符、
配置描述符、接口描述符、端点描述符、字符串描述符、设备限定描述符和其他速率配置描
述符,其中设备限定描述符和其他速率配置描述符用于高速USB 设备。标准USB描述符的
类型值,如表1 所示。
表1 标准USB 描述符的类型值
描述符的类型 值
设备描述符 1
配置描述符 2
字符串描述符 3
接口描述符 4
端点描述符 5
设备限定描述符 6
其他速率配置描述符 7
这些标准的描述符表示了USB 设备的特性。这些描述符中的字段均有固定的排列顺序,一般来说bLength 为第一个字段,bDescriptorType 为第二个字段。这些字段名称的前缀指出了该字段值的长度,有如下几类:
•b 表示一个字节(8byte);
•w表示一个字(16byte);
•bm表示按位寻址;
•bcd表示采用二进制编码的10 进制数;
•i表示索引值;
•id 表示标识码。
2 设备描述符
USB 的设备描述符用于表示USB 设备的总体信息,一个USB 设备只能有一个设备描述符(Device)。设备描述符中的设置值对该设备中同一传输模式下的所有配置都有效。
2.1 设备描述符定义
USB 设备描述符由14 个字段组成,总长度固定为18个字节,其格式如表2所示。

表2 设备描述符格式
字 段 名 长度/字节 地址偏移量 说 明
bLength 1 0 描述符的长度(12H字节)
bDescriptorType 1 1 描述符的类型:设备描述符=01H
bcdUSB 2 2 USB 规范版本号(采用BCD码)
bDeviceClass 1 4 类代码
bDeviceSubClass 1 5 子类代码
bDeviceProtocol 1 6 协议代码
bMaxPackerSize0 1 7 端点0 支持最大数据包的长度
idVendor 2 8 供应商ID
idProduct 2 10 产品ID
bcdDevice 2 12 设备版本号(采用BCD 码)
iManufacturer 1 14 供应商字符串描述符的索引值
iProduct 1 15 产品字符串描述符的索引值
iSerialNumber 1 16 设备序列号字符串描述符的索引值
bNumConfigurations 1 17 所支持的配置数
下面详细说明各个字段的含义。
•bLength:用于表示设备描述符的长度,固定为18 个字节,即12H。
•bDescriptorType:用于表示设备描述符的类型值,固定为01H。
•bcdUSB:用于表示该USB 设备所遵循的USB 规范版本号,以BCD码的形式表示。格式为0xAABC,其中AA 为主版本号,B 为次版本号,C为子次版本号。例如高速USB 版本为USB2.0,即设置为0200H。
•bDeviceClass:用于表示该USB 设备所属的标准设备类。该字段值在1~FEH之间的时候,表示USB协议中定义的某个设备类,如03H表示HID 设备类;当为0时,表示USB设备的各个接口互相独立,分别属于不同的设备类,在USB 固件接口描述符中将进一步定义;
当为FFH 时,表示由供应商自定义该设备类。
•bDeviceSubClass:用于表示USB 设备所属的标准设备子类,主要用于对USB 设备类进行了更加细致的定义。例如对于前面的HID设备类,只有一个子类代码01H。而对于显示设备类(04H),子类代码01H表示CRT 显示器、02H表示平面显示器、03H 表示3D 显示器。当bDeviceClass=0 时,该字段也必须为0;当该字段为FFH 时,表示由供应商自定义设备子类。
•bDeviceProtocol:用于表示USB 设备所采用的设备类协议,其值和bDeviceClass 及
bDeviceSubClass 的值有关。当该字段为0 时,表示不使用任何设备类协议。如果该USB 设备属于某个设备类和设备子类,则应该继续指明所采用的设备类协议。当该字段为FFH 时,表示设备类协议由供应商自定义。
•bMaxPackerSize0:用于表示在USB设备中,端点0 所支持最大数据包的长度,它以
字节为单位。对于低速USB设备,bMaxPackerSize0为8;对于全速USB设备,bMaxPackerSize0
为8、16、32或64;对于高速USB 设备bMaxPackerSize0为64。
•idVendor:用于表示USB 设备供应商的ID。USB组织中规定每种产品都必须包含一个供应商ID,这样可以使主机为其加载合适的驱动程序。
•idProduct:用于表示USB设备产品的ID,由设备供应商提供。idProduct用于表示特定的USB 设备,在USB设备上电的时候可以帮助USB 主机选择合适的驱动程序。
•bcdDevice:用于表示USB设备的版本号,它以BCD码的形式表示。一般来说bcdDevice由设备供应商指定,在USB设备上电的时候可以帮助USB主机加载合适的驱动程序。
•iManufacturer:用于表示供应商字符串描述符的索引值。具体字符串的内容在后面字符串描述符中定义。如果没有供应商字符串,可以置为0。
•iProduct:用于表示产品字符串描述符的索引值。具体字符串的内容在后面字符串描述符中定义。如果没有产品字符串,可以置为0。
•iSerialNumber:用于表示设备序列号字符串描述符的索引值,如果没有,可以置为0。
•bNumConfigurations:用于表示该USB设备所支持的配置数。
2.2 设备描述符示例
典型的USB设备描述符的定义示例如下,采用汇编语言进行描述:
DeviceDscr:
db DSCR_DEVICE_LEN ;描述符长度
db DSCR_DEVICE ;描述符类型
dw 0002H ;规范(BCD)
db 00H ;设备类
db 00H ;设备子类
db 00H ;设备协议子类
db 64 ;最大数据包长度
dw 0B404H ;供应商ID
dw 0410H ;产品ID
dw 0000H ;设备版本号
db 1 ;供应商字符串索引
db 2 ;产品字符串索引
db 0 ;序列号字符串索引
db 1 ;所支持的配置数
3 配置描述符
在USB 协议中,USB 设备可以有一个或多个配置,每个配置都必须有一个配置描述符
(Configuration)。配置描述符用于表示USB设备的配置信息。
3.1 配置描述符定义
配置描述符由8个字段组成,长度固定为9 个字节,其格式见表3。
表3 配置描述符格式
字 段 名 长度/字节 地址偏移量 说 明
bLength 1 0 描述符的长度(09H字节)
bDescriptorType 1 1 描述符的类型:配置描述符=02H
wTotalLength 2 2 配置信息的总长度
bNumInterfaces 1 4 该配置所支持的接口数
bConfigurationValue 1 5 配置值
iConfiguration 1 6 字符串描述符的索引值
bmAttributes 1 7 配置特性
bMaxPower 1 8 所需要的最大总线电流(2mA 为单位)
下面详细说明各个字段的含义。
•bLength:用于表示配置描述符的长度,固定为9 个字节,即09H。
•bDescriptorType:用于表示配置描述符的类型值,固定为02H。
•wTotalLength:用于表示配置信息的总长度,包括配置描述符、接口描述符和端点描述符长度的总和。
•bNumInterfaces:用于表示配置所支持的接口数。一般来说,USB 设备的接口至少有一个,因此其最小值为1。
•bConfigurationValue:用于表示USB 设备的配置值。
•iConfiguration:用于指出配置字符串描述符的索引值。具体字符串的内容在后面字符串描述符中定义。如果没有配置字符串,可以置为0。
•bmAttributes:用于表示USB 设备的配置特性。bmAttributes 是按位寻址的,第6 位
置1 表示使用总线电源;第5 位置1表示支持远程唤醒功能;该字段的其他位均保留,一般来说,第0~4位置0 即可,第7位置1 即可。
•bMaxPower:用于表示USB 设备运行时所需要消耗的总线电流,单位以2mA 为基准。
USB 设备可以从USB总线上获得最大的电流为500mA,因此bMaxPower字段的最大值可以
设置为250。

3.2 配置描述符示例
典型的USB配置描述符的定义示例如下,采用汇编语言进行描述:
ConfigDscr:
db DSCR_CONFIG_LEN ;描述符长度
db DSCR_CONFIG ;描述符类型
db (ConfigDscrEnd-ConfigDscr) mod 256;长度(LSB)
db (ConfigDscrEnd-ConfigDscr) / 256;长度(MSB)
db 1 ;接口数
db 1 ;配置数
db 0 ;配置字符串
db 10000000b ;特性(b7 - buspwr, b6 - selfpwr, b5 - rwu)
db 100 ;功率需求
ConfigDscrEnd: ;结束
4 字符串描述符
在USB 协议中,字符串描述符(String)是可选的。字符串描述符用于保存一些供应商名称、产品序列号等文本信息。
4.1 字符串描述符定义
字符串描述符由3 个字段组成,其长度随字符串的数量和信息的长度而变化。字符串描述符的格式见表5.4。
表4 字符串描述符格式
字 段 名 长度/字节 地址偏移量 说 明
bLength 1 0 描述符的长度(N+2 字节)
bDescriptorType 1 1 描述符的类型:字符串描述符=03H
bString N 2 字符串
下面详细说明各个字段的含义:
•bLength:用于表示字符串描述符的长度,如果字符串长度为N,则其值为N+2;
•bDescriptorType:用于表示字符串描述符的类型值,固定为03H;
•bString:UNICODE编码的字符串。
4.2 字符串描述符示例
典型的USB字符串描述符的定义示例如下,其中定义了两个字符串,采用汇编语言进行描述:
StringDscr:
StringDscr0:
db StringDscr0End-StringDscr0 ;字符串描述符长度
db DSCR_STRING
db 09H,04H
StringDscr0End:
StringDscr1:
db StringDscr1End-StringDscr1 ;字符串描述符长度
db DSCR_STRING
db 'C',00
db 'y',00
db 'p',00
db 'r',00
db 'e',00
db 's',00
db 's',00
StringDscr1End:
5 接口描述符
在USB 协议中,USB设备的接口是一个端点的集合,负责完成该USB 设备的特定功能,例如数据输入和输出。USB 设备的每一个接口都必须有一个接口描述符(Interface),接口描述符用来表示USB 设备中各个接口的特性,包括接口的端点个数、所属的设备类和子类等。
5.1 接口描述符定义
接口描述符由9个字段组成,长度固定为9 个字节,其格式见表5。
表5 接口描述符格式
字 段 名 长度/字节 地址偏移量 说 明
bLength 1 0 描述符的长度(09H字节)
bDescriptorType 1 1 描述符的类型:接口描述符=04H
bInterfaceNumber 1 2 接口号
bAlterateSetting 1 3 可替换设置值
bNumEndpoints 1 4 端点0 以外的端点数
bInterfaceClass 1 5 类代码
bInterfaceSubClass 1 6 子类代码
bInterfaceProtocol 1 7 协议代码
iInterface 1 8 字符串描述符的索引值
下面详细说明各个字段的含义。
•bLength:用于表示接口描述符的长度,固定为9 个字节,即09H。
•bDescriptorType:用于表示接口描述符的类型值,固定为04H。
•bInterfaceNumber:用于表示接口的接口号。
•bAlterateSetting:用于表示接口的可替换设置值。
•bNumEndpoints:用于表示接口所使用的端口数,除端点0以外的所有端点。
•bInterfaceClass:用于表示接口所属的设备类。当bInterfaceClass在1~FEH 范围内时,表示该接口属于USB 定义的某个设备类;当该字段指为FFH 时,它表示该设备类是供应商自定义的。
•bInterfaceSubClass:用于表示接口所属的USB 设备子类。当bInterfaceClass=0时,该字段必须为0;如果bInterfaceClass字段在1~FEH之间,则该字段需进一步表示设备子类;当该字段为FFH 时,表示由供应商自定义设备子类。
•bInterfaceProtocol:用于表示接口所采用的USB 设备类协议,其值和bInterfaceClass及bInterfaceSubClass的值有关。当该字段为0 时,表示不使用任何设备类协议。如果该USB设备属于某个设备类和设备子类,则应该继续指明所采用的设备类协议。当该字段为FFH 时,表示由供应商自定义设备类协议。
•iInterface:用于指出接口字符串描述符的索引值。具体字符串的内容在后面字符串描述符中定义。如果没有配置字符串,可以置为0。
5.2 接口描述符示例
典型的USB接口描述符的定义示例如下,采用汇编语言进行描述:
;接口描述符
db DSCR_INTRFC_LEN ;描述符长度
db DSCR_INTRFC ;描述符类型
db 0 ;接口号
db 0 ;可替换设置值
db 6 ;端点数
db 0ffH ;类代码
db 00H ;子类代码
db 00H ;协议代码
db 0 ;接口描述字符串索引
6 端点描述符
在USB 协议中,端点描述符(Endpoint)用于指出USB 设备端点的特性,包括其所支持的传输类型、传输方向等信息。USB 中规定,端点0 没有端点描述符,其余端点必须包含端点描述符。
6.1 端点描述符定义
端点描述符由6个字段组成,其长度固定为7个字节。端点描述符格式见表6。
表6 端点描述符格式
字 段 名 长度/字节 地址偏移量 说 明
bLength 1 0 描述符的长度(07H字节)
bDescriptorType 1 1 描述符的类型:端点描述符=05H
bEndpointAddress 1 2 端点号、传输方向
bmAttributes 1 3 端点特性
wMaxPacketSize 2 4 最大数据包长度
bInterval 1 6 访问间隔
下面详细说明各个字段的含义。
•bLength;用于表示端点描述符的长度,固定为7 个字节,即07H。
•bDescriptorType:用于表示接口描述符的类型值,固定为05H。
•bEndpointAddress:用于表示端点的端点号以及端点的数据传输方向。第7 位表示端点的数据传输方向,0 表示OUT 数据传输,1 表示IN 数据传输;第0~3 位表示端点号,例如001B表示端点1、010B 表示端点2等;其余位均保留,必须置0。
•bmAttributes:用于表示端点的特性。其中第0 位和第1位表示端点的数据传输类型,00B 表示控制传输、01B 表示同步传输、10B 表示块传输、11B 表示中断传输;如果是同步传输,第2 位和第3 位表示同步类型,00B 表示非同步、01B 表示异步、10B 表示自适应、
11B 表示同步;第4 位和第5 位表示端点的用法类型,00B 表示数据端点、01B 表示显示反馈端点、10B表示隐式反馈端点、11B保留。其余位保留。
•wMaxPacketSize:用于表示端点所支持最大数据包的长度。其中第0~10位表示数据包长度,第11位和第12位指出每小帧最多传输的事务处理数,其余位均保留,必须置0。
•bInterval:用于指定端点数据传输的访问间隔。低速中断端点,取值范围为10~255,对应的访问间隔为10~255ms;对于全速中断端点,取值范围为1~255,对应的访问间隔为1~255ms;对于其他的端点,可以参阅USB 相关协议。
6.2 端点描述符示例
典型的USB端点描述符的定义示例如下,采用汇编语言进行描述:
;端点描述符
db DSCR_ENDPNT_LEN ;描述符长度
db DSCR_ENDPNT ;描述符类型
db 02H ;端点号及方向
db ET_BULK ;端点类型
db 00H ;最大数据包长度(LSB)
db 02H ;最大数据包长度(MSB)
db 00H ;访问间隔
;端点描述符
db DSCR_ENDPNT_LEN ;描述符长度
db DSCR_ENDPNT ;描述符类型
db 04H ;端点号及方向
db ET_BULK ;端点类型
db 00H ;最大数据包长度(LSB)
db 02H ;最大数据包长度(MSB)
db 00H ;访问间隔
;端点描述符
db DSCR_ENDPNT_LEN ;描述符长度
db DSCR_ENDPNT ;描述符类型
db 86H ;端点号及方向
db ET_BULK ;端点类型
db 00H ;最大数据包长度(LSB)
db 02H ;最大数据包长度(MSB)
db 00H ;访问间隔
;端点描述符
db DSCR_ENDPNT_LEN ;描述符长度
db DSCR_ENDPNT ;描述符类型
db 88H ;端点号及方向
db ET_BULK ;端点类型
db 00H ;最大数据包长度(LSB)
db 02H ;最大数据包长度(MSB)
db 00H ;访问间隔
其中定义了4 个端点,下面分别介绍这4个端点的属性。
•端点02,块传输输出端点,最大数据包长度512 个字节。
•端点04,块传输输出端点,最大数据包长度512 个字节。
•端点86,块传输输入端点,最大数据包长度512 个字节。
•端点88,块传输输入端点,最大数据包长度512 个字节。
7 设备限定描述符
在高速USB 系统中,如果USB 设备既需要采用高速传输又需要全速传输,则它必须支持设备限定描述符(Device_Qualifier),设备限定描述符用以指出另一传输速率下该设备的总体信息。
7.1 设备限定描述符定义
设备限定符由9个字段组成,长度固定为10个字节。设备限定描述符格式见表7。
表7 设备限定描述符格式
字 段 名 长度/字节 地址偏移量 说 明
bLength 1 0 描述符的长度(0AH 字节)
bDescriptorType 1 1 描述符的类型:设备限定描述符=06H
bcdUSB 2 2 USB 规范版本号(采用BCD码)
bDeviceClass 1 4 类代码
bDeviceSubClass 1 5 子类代码
bDeviceProtocol 1 6 协议代码
bMaxPackerSize0 1 7 端点0 所支持最大数据包的长度
bNumConfigurations 1 8 所支持的配置数
bReserved 1 9 保留
下面详细说明各个字段的含义。
•bLength:用于表示设备限定描述符的长度,固定为10 个字节,即0AH。
•bDescriptorType:用于表示设备限定描述符的类型值,固定为06H。
•bcdUSB:用于表示USB 设备及其描述符所遵循的USB 规范版本号,以BCD 码的形式表示,其值必须在版本2.0 以上。
•bDeviceClass:用于表示USB 设备所属的设备类。该字段值在1~FEH 之间的时候,表示为USB定义的某个设备类,如03H表示HID设备类。当为0 时,表示USB 设备的各个接口互相独立,分别属于不同的设备类,在接口描述符中会进一步说明。当为FFH 时,表示该设备为供应商自定义的。
•bDeviceSubClass:用于表示USB 设备所属的设备子类,其对USB设备类进行了更详细的定义。例如对于前面的HID设备类,只有一个子类代码01H。而对于显示设备类(04H),子类代码01H表示CRT显示器、02H表示平面显示器、03H表示3D显示器。当bDeviceClass=0时,该字段也必须为0;当该字段为FFH 时,表示由供应商自定义设备子类。
•bDeviceProtocol:用于表示USB 设备所采用的设备类协议,其值和bDeviceClass 及
bDeviceSubClass 的值有关。当该字段为0 时,表示不使用任何设备类协议。如果该USB 设备属于某个设备类和设备子类,则应该继续指明所采用的设备类协议。当该字段为FFH 时,表示由供应商自定义设备类协议。
•bMaxPackerSize0:用于表示USB 设备端点0所支持最大数据包的长度,它以字节为单位。对于低速USB 设备,bMaxPackerSize0 为8;对于全速USB 设备,bMaxPackerSize0为8、16、32或64;对于高速USB 设备bMaxPackerSize0为64。
•bNumConfigurations:用于表示USB 设备另一个速率所支持的配置数。
•bReserved:保留项,必须置0。
7.2 设备限定描述符示例
典型的USB设备限定描述符的定义示例如下,采用汇编语言进行描述:
DeviceQualDscr:
db DSCR_DEVQUAL_LEN ;描述符长度
db DSCR_DEVQUA ;描述符类型
dw 0002H ;规范(BCD)
db 00H ;设备类
db 00H ;设备子类
db 00H ;设备协议子类
db 64 ;最大数据包长度
db 1 ;配置数
db 0 ;保留
8 其他速率配置描述符
在高速USB 系统中,如果USB 设备既需要采用高速传输又需要全速传输,则必须支持其他速率配置描述符(Other_Speed_Configuration)。其他速率配置描述符指出了另一个传输速率下该设备的配置信息。
8.1 其他速率配置描述符定义
其他速率配置描述符由8个字段组成,长度固定为9字节。其他速率配置描述符各个字段的格式及含义见表8。
表8 其他速率配置描述符格式
字 段 名 长度/字节 地址偏移量说明
bLength 1 0 描述符的长度(09H字节)
bDescriptorType 1 1 描述符的类型:其他速率配置描述为07H
wTotalLength 2 2 配置信息的总长度
bNumInterfaces 1 4 所支持的接口数
bConfigurationValue 1 5 配置值
iConfiguration 1 6 字符串描述符的索引值
bmAttributes 1 7 配置特性
bMaxPower 1 8 所需要的最大USB总线电流(2mA为单位)
下面详细说明各个字段的含义。
•bLength:用于表示其他速率配置描述符的长度,固定为9个字节,即09H。
•bDescriptorType:用于表示其他速率配置描述符的类型值,固定为07H。
•wTotalLength:用于表示其他速率配置信息的总长度,包括配置描述符、接口描述符、端点描述符、设备类定义描述符和供应商自定义描述符的总和。
•bNumInterfaces:用于表示其他速率配置所支持的接口数。
•bConfigurationValue:用于表示其他速率配置值。
•iConfiguration:用于指出配置字符串描述符的索引值,具体字符串的内容在后面字符串描述符中定义。如果没有配置字符串,可以置为0。
•bmAttributes:用于表示配置特性。它是按位寻址的,第6 位置1 表示使用总线电源;
第5 位置1表示支持远程唤醒功能;该字段的其他位均保留,一般来说,第0~4 位应该置0,第7 位应该置1。
•bMaxPower:用于表示USB 设备运行时所需要消耗的总线电流,单位以2mA 为基准。USB 设备可以从USB总线上获得最大的电流为500mA,因此该字段的最大值为250。
8.2 其他速率配置描述符示例
典型的USB配置描述符的定义示例如下,采用汇编语言进行描述:
OtherSpeedConfigDscr:
db DSCR_CONFIG_LEN ;描述符长度
db DSCR_CONFIG ;描述符类型
db (OtherSpeedConfigDscrEnd-OtherSpeedConfigDscr) mod 256;长度(LSB)
db (OtherSpeedConfigDscrEnd-OtherSpeedConfigDscr) / 256;长度(MSB)
db 1 ;接口数
db 1 ;配置数
db 0 ;配置字符串
db 10000000b ;特性(b7 - buspwr, b6 - selfpwr, b5 - rwu)
db 50 ;功率需求
OtherSpeedConfigDscrEnd: ;结束
9 小结
本文主要讲解了USB设备各种描述符的结构及配置,包括设备描述符、配置描述符、字符串描述符、接口描述符、端点描述符、设备限定描述符和其他速率配置描述符。USB设备描述符是USB功能设备设计的基础,每个USB设备都需要有完善的描述符。

some FAQ about CY7C68013

01、Reading Serial EEPROM which is Connected to the FX2Question: Is there any way to read the serial EEPROM (EEPROM with VID/PID), connected to the FX2 (CY7C68013), from the host?
Response: If you download the Vend_Ax example firmware (c:\cypress\usb\examples\fx2\vend_ax) with the EZ-USB control panel, you can use the Vend Req toolbar to read the serial EEPROM on the board. Use the 0xA2 for a small (LC00) EEPROM and 0xA9 for a large (LC64) EEPROM. Specify the offset with the Value field (such as 0x0000), the direction of EEPROM access (i.e., IN to read the EEPROM) and how many bytes to read (e.g., 16). There should be a memory dump type display of the data read from the serial EEPROM in the data area of the control panel window. If a string of "CD CD CD .." apperars, then the access to the EEPROM failed. Try again with 0xA9 if you used 0xA2 and vice versa. For serial EEPROMs programmed for VID/PID only enumeration (see the FX2 Technical Reference Manual section 3.4.2 C0 loads), the VID/PID will be in the first bytes of the EEPROM. If the serial EEPROM contains a complete program (manual section 3.4.3), then dump the bytes at offset of the device descriptor program. You will need the program's link map listing (.m51) file to determine the correct offset.

02、FX2 Technical Reference Manual and Datasheet
Question: Where can I find soft copies of the FX2 Technical Reference Manual and Datasheet?
Response: Look at "C:\Cypress\USB\doc\FX2\FX2 TechRefManual.pdf". This is a very well written and readable manual, and is the key reference you will want to use. The datasheet describes the hardware interfaces of the part. It is at "C:\CYPRESS\USB\doc\FX2\CY7C68013.pdf".

03、CY7C68013 I2C-compatible Interface
Question:Can the I2C-compatible interface be used for general purpose applications such as writing/reading to and from the internal registers of an I2C slave device?
Response:Yes, it is possible to access other I2C slave devices such as EEPROMs, RTCs, temperature sensors, etc. through the I2C-compatible interface.
However, the I2C-compatible interface cannot be mastered by an outside I2C controller, as that interface on the FX2 supports a master-only mode. In addition, the internal FX2 registers cannot be accessed via this interface.

04、CY7C68013 Serial EEPROM Read
Question:Is there a way to read the serial EEPROM (EEPROM with VID/PID) from the host? Is there a way to read the serial EEPROM using the 8051 and then relay the info to the host using an endpoint?

Response:Download the Vend_Ax example firmware (c:\cypress\usb\examples\fx2\vend_ax) with the EZ-USB control panel and use the Vend Req toolbar to read the serial EEPROM on the board.
Use the 0xA2 for a small (LC00) EEPROM and 0xA9 for a large (LC64) EEPROM. Specify the offset with the value field (such as 0x0000), the direction of EEPROM access (i.e., IN to read the EEPROM), and how many bytes to read.
There should be a memory dump type display of the data read from the serial EEPROM in the data area of the control panel window. If a string of "CD CD CD .." appears, then the access to the EEPROM failed. Try again with 0xA9 if 0xA2 was used and vice versa. Also, verify that the EEPROM enable jumper is installed.
For serial EEPROMs programmed for VID/PID only enumeration, the VID/PID will be in the first bytes of the EEPROM. If the serial EEPROM contains a complete program, then dump the bytes at offset of the device descriptor of theprogram. The program's link map listing (.m51) file is used to determine the correct offset.

05、Serial EEPROM programming.
Questions:How can I program the serial EEPROM?What tools are included with the development kit to create my own image to program into the EEPROM?

Response:The serial EEPROM on the development board can be programmed by selecting the EEPROM button in the EZ-USB Control Panel and then navigating to the folders which contain EEPROM images we provide with the development kits as follows:
For the AN2131 family:C:\Cypress\USB\Examples\EzUsb\eeprom images\2100.iic
For the CY7C64613 FX family:C:\Cypress\USB\Examples\EzUsb\eeprom images\2200_24Mhz.iic or 2200_48MhHz.iic
For the CY7C68013 FX2:C:\Cypress\USB\Examples\FX2\Fx2_C0.iic
You can create your own eeprom image using the tools provided with the development kit. After you have your project compiled as a .hex file use the hex2bix utility to create an iic image. You can also use the EZ-USB Control Panel, after downloading the vend_ax example to program the EEPROM.
Related Documents:C:\Cypress\USB\Doc\EZ-USB General\EZ-USB Contents and Tutorial.pdfC:\Cypress\USB\Bin\hex2bix.exe

06、I2C Wait Condition (SCL low) CY7C68013 FX2
Question: Will the FX2 I2C controller wait when the receiver holds the SCL low?

Response: Yes, the FX2 will wait on the slave device. Please see section 13.4.1 of the FX2 Technical Reference Manual; which states the following: "Once the master drives SCL low, external slave devices can hold SCL low to extend clock-cycle times."

简单的I2C协议笔记

近段时间做IIC相关的工作,顺便把IIC协议复习了下,下面的东西权当做个笔记,以备将来查阅。

I2C是一种串行数据通信协议,仅使用两根信号线:SerialClock(简称SCL)和SerialData(简称SDA)。I2C是总线结构,1个Master,1个或多个Slave,各 Slave设备以7位地址区分,地址后面再跟1位读写位,表示读(=1)或者写(=0),所以我们有时也可看到8位形式的设备地址,此时每个设备有读、写两个地址,高7位地址其实是相同的。

一. 技术性能:
工作速率有100K和400K两种;
支持多机通讯;
支持多主控模块,但同一时刻只允许有一个主控;
由数据线SDA和时钟SCL构成的串行总线;
每个电路和模块都有唯一的地址;
每个器件可以使用独立电源;

二. 基本工作原理:
以启动信号START来掌管总线,以停止信号STOP来释放总线;
每次通讯以START开始,以STOP结束;
启动信号START后紧接着发送一个地址字节,其中7位为被控器件的地址码,一位为读/写控制位R/W,R/W位为0表示由主控向被控器件写数据,R/W为1表示由主控向被控器件读数据;
当被控器件检测到收到的地址与自己的地址相同时,在第9个时钟期间反馈应答信号;
每个数据字节在传送时都是高位(MSB)在前;

写通讯过程:
1. 主控在检测到总线空闲的状况下,首先发送一个START信号掌管总线;
2. 发送一个地址字节(包括7位地址码和一位R/W);
3. 当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK);
4. 主控收到ACK后开始发送第一个数据字节;
5. 被控器收到数据字节后发送一个ACK表示继续传送数据,发送NACK表示传送数据结束;
6. 主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线;

读通讯过程:
1. 主控在检测到总线空闲的状况下,首先发送一个START信号掌管总线;
2. 发送一个地址字节(包括7位地址码和一位R/W);
3. 当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK);
4. 主控收到ACK后释放数据总线,开始接收第一个数据字节;
5. 主控收到数据后发送ACK表示继续传送数据,发送NACK表示传送数据结束;
6. 主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线;

四. 总线信号时序分析
1. 总线空闲状态
SDA和SCL两条信号线都处于高电平,即总线上所有的器件都释放总线,两条信号线各自的上拉电阻把电平拉高;
2. 启动信号START
时钟信号SCL保持高电平,数据信号SDA的电平被拉低(即负跳变)。启动信号必须是跳变信号,而且在建立该信号前必修保证总线处于空闲状态;
3. 停止信号STOP
时钟信号SCL保持高电平,数据线被释放,使得SDA返回高电平(即正跳变),停止信号也必须是跳变信号。
4. 数据传送
SCL线呈现高电平期间,SDA线上的电平必须保持稳定,低电平表示0(此时的线电压为地电压),高电平表示1(此时的电压由元器件的VDD决定)。只有在SCL线为低电平期间,SDA上的电平允许变化。
5. 应答信号ACK
I2C总线的数据都是以字节(8位)的方式传送的,发送器件每发送一个字节之后,在时钟的第9个脉冲期间释放数据总线,由接收器发送一个ACK(把数据总线的电平拉低)来表示数据成功接收。
6. 无应答信号NACK
在时钟的第9个脉冲期间发送器释放数据总线,接收器不拉低数据总线表示一个NACK,NACK有两种用途:
a. 一般表示接收器未成功接收数据字节;
b. 当接收器是主控器时,它收到最后一个字节后,应发送一个NACK信号,以通知被控发送器结束数据发送,并释放总线,以便主控接收器发送一个停止信号STOP。

五. 寻址约定
地址的分配方法有两种:
1. 含CPU的智能器件,地址由软件初始化时定义,但不能与其它的器件有冲突;
2. 不含CPU的非智能器件,由厂家在器件内部固化,不可改变。

高7位为地址码,其分为两部分:
1. 高4位属于固定地址不可改变,由厂家固化的统一地址;
2. 低三位为引脚设定地址,可以由外部引脚来设定(并非所有器件都可以设定);

六.数据格式
I2C数据格式如下:
无数据:SCL=1,SDA=1;
开始位(Start):当SCL=1时,SDA由1向0跳变;
停止位(Stop): 当SCL=1时,SDA由0向1跳变;
数据位:当SCL由0向1跳变时,由发送方控制SDA,此时SDA为有效数据,不可随意改变SDA;
当SCL保持为0时,SDA上的数据可随意改变;
地址位:定义同数据位,但只由Master发给Slave;
应答位(ACK):当发送方传送完8位时,发送方释放SDA,由接收方控制SDA,且SDA=0;
否应答位(NACK):当发送方传送完8位时,发送方释放SDA,由接收方控制SDA,且SDA=1。

当数据为单字节传送时,格式为:
开始位,8位地址位(含1位读写位),应答,8位数据,应答,停止位。

当数据为一串字节传送时,格式为:
开始位,8位地址位(含1位读写位),应答,8位数据,应答,8位数据,应答,……,8位数据,应答,停止位。

需要注意的是:
1,SCL一直由Master控制,SDA依照数据传送的方向,读数据时由Slave控制SDA,写数据时由Master控制SDA。当8位数据传送完毕之后,应答位或者否应答位的SDA控制权与数据位传送时相反。
2,开始位“Start”和停止位“Stop”,只能由Master来发出。
3,地址的8位传送完毕后,成功配置地址的Slave设备必须发送“ACK”。否则否则一定时间之后Master视为超时,将放弃数据传送,发送“Stop”。
4,当写数据的时候,Master每发送完8个数据位,Slave设备如果还有空间接受下一个字节应该回答“ACK”,Slave设备如果没有空间接受更多的字节应该回答“NACK”,Master当收到“NACK”或者一定时间之后没收到任何数据将视为超时,此时Master放弃数据传送,发送 “Stop”。
5,当读数据的时候,Slave设备每发送完8个数据位,如果Master希望继续读下一个节,Master应该回答“ACK” 以提示Slave准备下一个数据,如果Master不希望读取更多字节,Master应该回答“NACK”以提示Slave设备准备接收Stop信号。
6,当Master速度过快Slave端来不及处理时,Slave设备可以拉低SCL不放(SCL=0将发生“线与”)以阻止Master发送更多的数据。此时Master将视情况减慢或结束数据传送。

在实际应用中,并没有强制规定数据接收方必须对于发送的8位数据做出回应,尤其是在Master和Slave端都是用GPIO软件模拟的方法来实现的情况下,编程者可以事先约定数据传送的长度,不发送ACK,有时可以起到减少系统开销的效果。

CY7C68013 IIC

EZ USB FX2(FX2) 是Cypress公司推出的USB 2.0控制器, 当用于高速数据采集系统时, 其片内集成的I2C 总线控制器,可以很好地实现与一些串行外设(如串行存储器、串行AD转换器等) 的无缝接口。一下简单介绍FX2 片内I2C总线控制器实现I2C 协议,I2C总线的读写操作流程。

1.FX2 片内I2C 总线控制器的特性

FX2 芯片内集成的I2C总线控制器具有2 种功能: 启动加载数据和通用I2C 总线接口。其中, 启动加载数据就是当芯片上电复位后, 通过检查其I2C总线上是否连接有串行E2PROM, 以决定采用何种设备固件加载方式; 通用I2C总线接口可以很方便地连接一些串行外设。其I2C总线的默认传输速率为100kbs, 可以被配置成快速方式, 传输速率可达400 kbs。FX2只作为主设备, 任何总线冲突将产生一个错误位, 中断数据的传输。另外, 芯片的串行数据线(SDA)和串行时钟线(SCL)需分别连接上拉电阻。

FX2 中I2C总线寄存器如下表所示:
I2DAT为8 bit 数据寄存器, 负责数据的读入或送出;
I2CTL为配置寄存器,负责配置总线;
I2CS为控制状态寄存器, 负责控制传输和报告各种状态。

表1 FX2 中I2C 总线控制器寄存器

地址 名称 b7 b6 b5 b4 b3 b2 b1 b0
E678 I2CS START STOP LASTRD ID1 ID0 BERR ACK DONE
E679 I2DAT D7 D6 D5 D4 D3 D2 D1 D0
E67A I2CTL 0 0 0 0 0 0 STOPE 400 kHz

开始控制位START: 当START位被配置为1, 写入数据到I2DAT, 开启I2C总线数据传输。此位在接收器的应答信号期间自动清零。

停止控制位STOP: 当STOP位被配置为1, 当前总线数据传输完后, 停止I2C总线数据传输。此位在总线停止传输数据后自动清零。

错误状态位BERR: 当总线上出现错误时, BERR 位被置为1。此位也可自动清零。

应答信号状态位ACK: ACK 位为1时, 表示接收器成功接受数据; 反之, 表示数据传输失败。此位在读传输时被忽略。

状态位DONE: 当完成1Byte 数据传输后, FX2设置DONE位, 并产生中断。当读或写I2DAT寄存器时, 此位自动清零。

由上可知, 只要正确配置或读取I2CS和I2CTL中相应的状态位, 并向I2DAT中写入数据或从其中读出数据,就能完成I2C总线数据的传输, 即EZ USB FX2通过表1中的3个寄存器实现了I2C 总线协议, 方便、快捷地完成数据的传输。

I2C总线读写流程

A.发送数据(参考手册 EZ-USB FX2 Technical Reference Manual P290 13.4.3 Sending Data)

1.设置start=1;

2.向I2DAT写外围设备的地址和方向=0(对于写);

3.等待done=1。如果BEER=1或ACK~=0,则转向步骤7;

4.用数据字节加载I2DAT;

5.等待DONE=1。如果BEER=1或ACK~=0,则转向步骤7;

6.对于每一个字节,重复4\5两个步骤,直到所有字节全部加载完成;

7.设置STOP=1。

B.接收数据(参考手册 EZ-USB FX2 Technical Reference Manual P290 13.4.4 Receiving Data)

1.设置START=1;

2.将外设地址和方向=1(对于读)写入I2DAT中;

3.等待DONE=1,如果BEER=1或ACK~=0,则通过设置stop=1结束;

4.读I2DAT并放弃数据。这表示9个脉冲的第一瞬时脉冲作为从从属设备来的第1个字节的时钟;

5.等待DONE=1,如果beer=1,则通过STOP=1结束;

6.从I2DAT读数据。这表示另外的读传输;

7.对于每一个字节重复6\7过程;

8.在读到最后一个字节之前,设置LASTRD=1;

9.从I2DAT中读数据,LASTRD=1,这就在总线初始化最终字节的读操作;

10.等待DONE=1.如果BEER=1,则通过设置STOP=1来结束;

11.设置STOP=1;

12.在设置STOP位后,从I2DAT立即读最后的字节。这就重新得到最后一个数据字节,而不用在I2CS总线上初始化一个额外的读处理(9个或更多的SCL脉冲)。

Monday, March 9, 2009

一个小逻辑游戏

先不要看下面答案,思考如下问题:
有甲、乙、丙三个精灵,其中一个只说真话,另外一个只说假话,第三个随机地决定何时说真话,何时说假话。你可以向这三个精灵发问三条是非题,而你的任务 是从他们的答案找出谁说真话,谁说假话,谁是随机答话。这个难题困难的地方是这些精灵会以“Da”或“Ja”回答,但你并不知道它们的意思,只知道其中一 个字代表“对”,另外一个字代表“错”。那么,你应该如何设计那三个问题呢?

如下是问题的解答:

第一个问题:你们是说真话的精灵吗?

答案有如下可能:两个精灵回答Da一个回答Ja或两个答Ja,一个答Da.则回答与另外两个不一样的那个精录一定是“随机决定何时说真话”的精灵。答案除 以上两种可能外,还有一种可能是三个回答都是一样的,如果都是Da刚Da代表“是”,如果都是Ja则Ja代表“是”。如果回答不是相同的,则多的那个代表 “是”。

通过第一步,如果直接找出了随机决定何时说真话的精灵,则只剩两个精灵。且此时,已经知道哪个代表是,哪个代表不是。然后问剩下的两个精灵,你们是随机决定何时说真话的精灵吗?说假话的精灵会回答“是”。则只要两个问题,就可以判断出结果了。

如果没能直接找出随机说真话的精灵,即三个精灵的回答都是一样的。则问第二个问题。

第二个问题:你们是随机决定何时说真的话的精灵吗?

此时已经通过第一问知道哪个代表“是”。如果有两个回答“是”,则回答“不是”的那个必是说真话的精灵。如果两个回答不是,则回答“是”的那个必是说假话的。

第三个问题要分两种情况。如果找出的是说真话的精灵,则随便指着一个问他,这个是不是说假话的精灵,就可以判断出结果;如果找出的是说假话的精灵,就随便指一个精灵,问他这个是不是说真话,然后作出相反的判断就可以得到结果了。

Friday, March 6, 2009

社保的骗局

社保真的是利民的吗?

本人经过收集大量的数据,走访元海地区著名大学教授和充分的计算,终于揭开了社保名为利民,实为榨取屁民血汗的真相。

一个白领的月薪为8000元,那么,他每个月贡献给社保多少钱呢,个人比例合计约为11%,外加6元大病保险,总共是886元,企业部分是2640元,也就是说,月薪8000元的白领每月贡献给社保机构3520元,每年贡献给社保42240元。

那么他可以享受到哪些福利呢,按照目前的养老保险制度,他干到60岁,算工作30年好了,总共为社保贡献一百二十六万七千多元元,退休后个人账户中有养老 金230400元,除以120月,得到1920元,再加上社保基金数,大概是月平均工资的30%(这个标准大家可以从网上搜到,缴满一年多1%),以南通 为例,社会平均工资为1642.4元,缴满30年,基础养老金为492.72元,他退休后可以领取的养老金为2412.72元左右。划算么,为社保贡献了 一百多万元(未计算利息,利息就当养狗了),退休金只能领取2412.72元,如果他活平均寿命72岁,则可领取347431.68元,为社保贡献了 919768.32元,将近100万。

有人会说,社保对高收入者是不公平对,对于低收入者是有利的,削峰填谷,调节贫富差距嘛,那我们来看看一个最低工资标准的人缴纳社保是不是划算。南通地区 的最低工资标准目前是850元,假设某人最低工资标准为850元,按照法律,以元海地区南通市为例,当地最低工资标准为850元,但是最低缴费标准为社会 平均工资的60%,也就是必须按照1644.2/月的工资标准缴纳社保,按照法律,他每个月个人缴费为186.67元,企业为其缴费为542.01, 合计共支出728.68元。也就是说,月薪为850元的低收入者,社保支出最少要728.68元,占其收入比例的85.73%。缴费30年,总计 262324.8元。退休后他可以领取个人缴纳的养老保险部分,(1644.2×0.08×12×30/120394.61元,加上社保基金支出的部 分约492.72/月,总计每月可领取887.33元,领到72岁,可以领回来126335.52元。社保除了赚取利息外,至少还赚了 262324.8-126335.52135989.28元。

可见,即使按照最低缴费标准缴纳社保,社保机构也可以赚取13万元/人,可见,社保不但不是利民的,反而是榨取体制外人士的又一个美丽骷髅头。

关于创业

此贴比较有意思,很实际的事情,给打算创业的朋友借鉴,特转之以纪念!

--------------------------------------------------------------------------

我现在办公的地方是民宅(租不起写字楼),然后民宅办公不能注册公司(必须去郊区开发区注册)。我申请的宽带是150元包月的FTTB。今天收到中国电信的通知单,说办公不能使用个人150元包月的宽带,要改成办公性质,然后我打电话过去询问办公性质到底一个月要交多少钱,对方答:4000。顿时我就无语 了。所以我说,大学生(包括中小学生),你也别创业了,中国的创业环境(这里特指上海)之恶劣不是你能想象的,不管你注册没注册公司,只要电信认为你在办公,那么好吧,你一年的上网成本就是48000。曾经有一个上海市的领导提了一个问题说为什么上海出不了马云,我不知道为什么,不过我知道马云当初在杭州民宅里办公的时候,宽带费用肯定不需要4000元一个月,否则杭州市的市长肯定也会问一个问题:怎么马云还没出来呢?

在中国(这里特指 上海),你要合法的做生意,首先你要在写字楼里租一个办公室,就算是50个平方吧,普通商务楼算2元一个平方/天,一个月就是3000元,加上其他水电费用,办公场地一个月至少5000,一年也就是6万元,上面说了,电信给办公用户宽带4000一个月,一年又花掉了48000元。你要合法办公,要申请注册公司吧,注册一个10万资本的公司,没多少钱,一共大概就花2000元。好了,然后你决定合法招聘一位员工,薪水4000元,你要为员工合法缴纳四金,养老保险金、医疗保险金、失业保险金、住房公积金、工伤保险金、生育保险金共计1760元,一年也就是69120元,加上一个办公桌一台电脑,算少一点,4000元。现在你可以合法开展业务了,算一算第一年你合法经营公司一共需要花多少钱:60000+48000+2000+69120+4000=183120元。

好吧,如果你一切依法办事,那么我估计1000个人里面999个都已经宣布破产了。我的公司到现在为止还没赚钱,你可能无法想象要赚到钱的艰难。在你还在为赚钱苦恼的时候,你必须养活工商,养活垄断的中国电信,养活你的员工,你注册一个10万的公司,第一年18万就没有了,然后你就等着破产吧。不!你决定 奋起反抗,你在民宅里办公,你申请个人宽带,你不再注册公司,你使用假发票,你暴利经营,你坑害消费者,你走投无路并开始诈骗老太太……现在你应该不那么 奇怪为什么和谐社会里有那么多的“不法分子”了吧?或者换一句话说,这个社会里充满了不法分子,只不过少数是大不法,和无数的小不法。你要么选择做一个守法的被人鱼肉的小把戏,要么选择做一个不愿屈服的小“不法分子”,当然如果你一定要守法并且还要创业,那么我劝你不如直接把钱捐献给伟大的政府和垄断企业,然后一了百了。

fromhttp://marila.net/2009/02/25/biechuangyele/

Labels

Followers