博文

IC设计过程 (2006-12-24 16:13:00)

IC设计过程

大体是
1. 首先是使用HDL语言进行电路描述,写出可综合的代码。然后用仿真工具作前仿真,
对理想状况下的功能进行验证。这一步可以使用Vhdl或Verilog作为工作语言,EDA工具
方面就我所知可以用Synopsys的VSS(for Vhdl)、VCS(for Verilog)
Cadence的工具也就是著名的Verilog-XL和NC Verilog
2.前仿真通过以后,可以把代码拿去综合,把语言描述转化成电路网表,并进行逻辑和
时序电路的优化。在这一步通过综合器可以引入门延时,关键要看使用了什么工艺的库
这一步的输出文件可以有多种格式,常用的有EDIF格式。
综合工具Synopsys的Design Compiler,Cadence的Ambit
3,综合后的输出文件,可以拿去做layout,将电路fit到可编程的片子里或者布到硅片上
这要看你是做单元库的还是全定制的。
全定制的话,专门有版图工程师帮你画版图,Cadence的工具是layout editor
单元库的话,下面一步就是自动布局布线,auto place & route,简称apr
cadence的工具是Silicon Ensembler,Avanti的是Apollo
layout出来以后就要进行extract,只知道用Avanti的Star_rcxt,然后做后仿真
如果后仿真不通过的话,只能iteration,就是回过头去改。
4,接下来就是做DRC,ERC,LVS了,如果没有什么问题的话,就tape out GDSII格式的文件
送制版厂做掩膜板,制作完毕上流水线流片,然后就看是不是work了
做DRC,ERC,LVSAvanti的是Hercules,Venus,其它公司的你们补充好了
btw:后仿真之前的输出文件忘记说了,应该是带有完整的延时信息的设计文件如:*.VHO,*.sdf

RTL->SIM->DC->SIM-->PT-->DC---ASTRO--->PT----DRC,LVS--->TAPE OUT
1。PT后一般也要做动态仿真,原因:异步路径PT是做不了的
2。综合后加一个形式验证,验证综合前后网表与RTL的一致性
3。布版完成后一般都会有ECO,目的手工修改小的错误

SPEC->ARCHITECTURE->RTL->SIM->DC->SIM-->PT-->DC---ASTRO--->PT----DRC,LVS--->TAPE OUT

SPEC:specification,在进行IC设计之前,首先需要对本IC的功能有一个基本的定义。

ARCHITECTURE:IC的系统架构,包括算法的设计,算法到电路的具体映射,电路的具体实现方法,如总线结构、流水方式等。

在IC前端的设计中,ARCHITECTURE才是精华,其他的大部分都是EDA工具的使用,技术含量不高。

dv, design verification,验证 和前端、后端并列。
DFT, design for test. 前后端合作,并与tapeout 后测试合作。

ir-drop. 后端和验证合作。
SI, 后端。
low-power design ,前后端合作.


阅读全文(1071) | 评论:0 | 复制链接

EDA流程和软件(2006-12-24 16:09:00)

 

集成的PLD/FPGA开发环境

这类软件都是由PLD/FPGA芯片厂家提供,基本都可以完成所有的设计输入(原理图或HDL),仿真,综合,布线,下载等工作。

Altera公司上一代的PLD开发软件,使用者众多。目前Altera已经停止开发MaxplusII,而转向QuartusII软件平台 MaxplusII学习资料下载
Altera公司的免费PLD开发软件,界面与标准版的MaxplusII完全一样,但需要通过使用MAX+PLUSII Advanced Synthsis插件才能支持VHDL/Verilog。 该支持MAX7000/3000和部分FLEX/ACEX芯片(如1K30,6016等),共47.1M 用网卡号申请license 如没有网卡,可以用硬盘号申请,license会发到你的电子信箱,有效期为6个月,到期后可再申请
Altera公司的免费PLD开发软件,界面与标准版的MaxplusII完全一样,只支持MAX7000和MAX3000系列器件,本身支持不复杂的VHDL和Verilog综合,软件较小,共26.8M 用网卡号申请license ,如没有网卡,可以用硬盘号申请,其他同上
Altera公司新一代PLD开发软件,适合大规模FPGA的开发 QuartusII学习资料下载
Altera公司的meifeui PLD开发软件QuartusII的免费版本,推荐使用256M以上内存,安装有NT或win2000的机器 用网卡号申请license license有效期为150天,到期后可再申请
Xilinx公司上一代的PLD开发软件,目前Xilinx已经停止开发Foundation,而转向ISE软件平台 Foundation学习资料下载
Xilinx公司目前的FPGA/PLD开发软件 ISE4.1中文学习资料
Xilinx公司的免费PLD开发软件,不需下载,可在线编译,结果用e-mail发送到信箱。使用简单,但要求较快的联网速度。支持XC9500 和 CoolRunner系列 不需要安装license,但必须注册,申请用户和password
Xilinx公司的免费PLD开发软件,支持XC9500,coolrunner,Spartan/II,部分Virtex/E/II器件  
ispDesignEXPERT
Lattice公司的PLD开发软件,目前最新软件改名为:ispLEVER  
Lattice公司的免费PLD开发软件,支持600个宏单元以下的Lattice芯片的设计 需要注册 license有效期为6个月,到期后可再申请
Wrap
Cypress公司开发软件  
  ACTEL公司开发软件  
  Quicklogic公司开发软件  
开发GAL/PAL的软件,DOS界面 免费
开发GAL/PAL的软件,DOS界面 免费

 

为了提高设计效率,优化设计结果,很多厂家提供了各种专业软件,用以配合PLD/FPGA芯片厂家提供工具进行更高效率的设计,最常见的组合是:同时使用专业HDL逻辑综合软件和PLD/FPGA芯片厂家提供的软件。

 

HDL前端输入与系统管理软件

这类软件主要是帮助用户完成HDL文本的编辑和输入工作,提高输入效率,并不是必须的,更多人更习惯使用集成开发软件或者综合/仿真工具中自带的文本编辑器,甚至可以直接使用普通文本编辑器。

UltraEdit
一个使用广泛的编辑器,低版本并不直接支持HDL,但可以将下面的文件中的文字添加到WORDFILE.txt中(该文件在UltraEdit安装目录下),即可支持相应的语言编辑,关键字将用不同色彩标出。VHDL87 VHDL93 Verilog HDL
HDL Turbo Writer
VHDL/verilog专用编辑器,可大小写自动转换,缩进,折叠,格式编排很方便。可直接使用FPGAadvantage做后端处理,此套软件也可以编辑C/C++,Java等多重语言,www.saros.com
HDL Designer Series
Mentor公司的前端设计软件,包括5个部分,涉及设计管理,分析,输入等,原Renoir软件也已转到HDL Designer Series www.mentor.com/hdldesigner
Visial VHDL/ Visal Verilog
可视化的HDL/Verilog编辑工具,可以通过画流程图等可视化方法生成一部分VHDL/Verilog代码innoveda公司出品
Visual Elite
Visial HDL的下一代产品,能够辅助系统级到电路级的设计 www.innoveda.com/products/datasheets_HTML/visualelite.asp

 

HDL逻辑综合软件

这类软件将把HDL语言翻译成最基本的与或非门的连接关系(网表),输出edf文件,导给PLD/FPGA厂家的软件进行试配和布线。 为了优化结果,在进行复杂HDL设计时,基本上都会使用这些专业的逻辑综合软件,而不使用PLD/FPGA厂家的集成开发软件中自带的逻辑综合功能。

Synplify / Synplify Pro, VHDL/Verilog综合软件,口碑相当不错。Synplicity公司出品。下载试用版
Synplify学习资料

LeonardoSpectrum,VHDL/VerilogHDL综合软件。(Mentor公司)下载试用版
Mentor公司最新的VHDL/VerilogHDL综合软件  
FPGA ComplierII,VHDL/Verilog综合软件,Synopsys公司已停止发展FPGAexpress软件,而转到FPGA ComplierII平台。 FPGAexpress学习资料
MAX+PLUS II Advanced Synthsis ALtera的一个免费HDL综合工具,安装后可以直接使用,是MaxplusII的一个插件,用这个插件进行语言综合,比直接使用MaxplusII综合的效果好。 下载(15M)

 

HDL仿真软件

对设计进行校验仿真,包括布线以前的功能仿真(前仿真)和布线以后包含延时的时序仿真(后仿真),对于一些复杂的HDL设计可能需要这些软件专业的仿真功能。

ModleSim

VHDL/VerilogHDL仿真软件,功能比ActiveHDL强大,使用比ActiveHDL复杂。Mentor的子公司Model Tech出品。更多信息可浏览:http://www.model.com ,下载试用板
Modelsim学习资料(中文)
Active HDL
VHDL/VerilogHDL仿真软件,人机界面较好,简单易用。Aldec公司出品 下载试用版
Active HDL 6.1 使用简介

Cadence公司出品,很好的Verilog/VHDL仿真工具,其中NC-Verilog 的前身是著名的Verilog仿真软件:Verilog-XL,用于Verilog仿真;NC-VHDL,用于VHDL仿真;NC-Sim,是Verilog/VHDL混合语言仿真工具
 
NC-Verlog/NC-VHDL/NC-SIM
VCS是Synopsys公司的VerilogHDL仿真软件,反映不错;scirocco是Synopsys公司的VHDL仿真软件,似乎没有VCS出名
 

VCS / Scirocco

 

其他相关软件

Mentor公司出品,VHDL/Verilog完整开发系统,可以完成除了布线以外所有的工作,包括三套软件:HDL Designer Series(输入及项目管理),Leonardo.Spectrum(综合)和Modelsim(仿真)下载试用版  
VHDL/Verilog专用调试和代码优化软件,多用于复杂设计的调试,如CPU设计 www.novas.com Debussy学习资料(5.27M)
Visual IP
可以为IP core供源代码保护和用户仿真模型  
可实现VHDL和Verilog语言的相互自动转化  
静态时序分析软件,Synopsys公司出品,多用于ASIC设计,也可以用于FPGA/PLD设计  
ISE与与Mathlab的接口,利用IP核在Mathlab中快速完成数字信号处理的仿真和最终FPGA实现  
QuartusII与Mathlab的接口,利用IP核在Mathlab中快速完成数字信号处理的仿真和最终FPGA实现  
配合QuartusII,可以完成NiosII软CPU的开发工作 NiosII快速入门
Synplicity公司出品,物理级综合工具  
Synplicity公司最新推出的一种验证工具,可以在FPGA工作时查看实际的节点信号,甚至可以像调试单片机一样,在HDL代码中设断点  
Synplify DSP
DSP Builder ,System Generator 类似,用于数字信号处理的开发  
一个很好用的HDL设计工具,能够自动将子模块聚合成一个顶层文件。 免费共享软件  
     

 


阅读全文(1725) | 评论:4 | 复制链接

北京大学微电子系的课程安排表 (2006-12-24 16:05:00)

北京大学微电子系的课程安排表

微电子学系本科生课程设置
Undergraduate Courses for Department of Microelectronics

必修课
限制性选修课
高等数学
Advanced Mathematics
大学语文
College Chinese and Literature
线性代数
Linear Algebra
微电子学概论
Introduction to Microelectronics

计算引论
Introduction to Computing

数字逻辑
Digital Logic
力学
Mechanics
数字逻辑实验
Lab on Digital Logic
电磁学
Electromagnetics
微机原理
Microcomputer Architecture
热学
Thermo Physics
微机实验
Lab on Microcomputer
光学
Optics
原子物理
Atomic Physics
普物试验
Lab on Electronic Circuits
数理方程
Mathematical and Physical Equations
电子线路
Electronic Circuits
理论力学
Theoretical Mechanics
电子线路实验
Lab on Electronic Circuits
电动力学
Electrodynamics
算法与数据结构
Algorithms and Data Structures
热力学与统计物理
Thermal and Statistical Physics
半导体物理
Semiconductor Physics
量子力学
Quantum Mechanics
半导体器件物理
Physics of Semiconductor Devices
计算机组织与体系结构
Computer Organization and Architecture
MOS集成电路
MOS Integrated Circuits
固体物理
Solid State Physics

双极集成电路
Bipolar Integrated Circuits

专用集成电路设计
Design of ASIC
集成电路CAD
CAD for Integrated Circuits
半导体工艺实验
Lab on Semiconductor Technology
集成电路工艺原理
Principle of Integrated Circuits Process
 
微电子学专业实验
Experiments in Microelectronics
 

 

微电子学与固体电子学硕士研究生课程设置
Postgraduate Courses for Microelectronics and Solid State Electronics

必修课  
半导体器件物理
Physics of Semiconductor Devices
计算微电子学 Computational Microelectronics
超大规模集成电路分析与设计 Analysis and Design of VLSI
超大规模集成电路新工艺技术 New Technology of VLSI
选修课  
大规模模拟集成电路 Analysis and Design of Analog VLSI
纳米半导体器件 Nanometer Semiconductor Devices
专用集成电路设计方法学 ASIC Design Methodology
数字高层次综合 High Level Synthesis of Digital System
晶体显微结构分析 Microscopic Analysis of Crystal
微电子机械系统概论 Introduction to Microelectromechanical System
低功耗CMOS集成电路设计 Low Power Design for CMOS Integrated Circuits
半导体器件模型与模拟 Modeling and Simulation of Semiconductor Devices
半导体器件理论 Theory of Semiconductor Devices
高等计算机体系结构 Advanced Computer Organization and Architecture
并行程序设计 Design for Parallel Programs
数字系统测试可测性设计 Design for Testability of Digital System
Verilog讨论班 Seminar on Verilog
半导体新结构器件 New Structure of Semiconductor Devices
半导体器件可靠性物理 Reliability Physics of Semiconductor Devices
微电子学材料 Materials of Microelectronic

阅读全文(1270) | 评论:0 | 复制链接

25位最具影响力的IC人物 (2006-12-24 16:00:00)

25位最具影响力的IC人物
当今许多企业的领导者几乎已经成为其企业的代名词,而在芯片业,我们听说的更多的是“龙芯”、“国芯”,他们的领导者的声音却鲜有传出。芯片业透出的强烈的民族色彩,也使这些隐身的企业家们的注意力更聚集在研发上,而坦然出现在镁光灯下的则是更能表达民族使命感的产品。

  我们要感谢那些嗅觉灵敏的投资家,18号文件之后,大量的资本陆续涌入IC业,正在崛起的中国IC产业、IC企业、IC企业家们,正成为媒体关注的焦点 。为此,《中国高新技术企业》杂志开始独家搜索:是谁引擎了中国IC产业?《中国高新技术企业》杂志要一点一点地挖掘出和中国IC产业血肉相连的台前幕后的英雄们。

  在搜索、寻找、组织他们的资料时我们遇到很大的困难,相对热闹的IT业来说,投身在芯片业的企业家似乎都很低调。几经周折,在部分业内热忱人士、北京工业促进局电子信息产业发展处和信中利研发部的协助下,《中国高新技术企业》根据CCID评选的“2003年10大最具成长性的IC设计公司”和“2003年中国前10大集成电路设计企业”,以及由中国半导体行业协会、中国电子信息产业发展研究院评选出的“2003中国半导体企业领军人物”等资料,经过细致的分析,筛选出这25位中国芯片业的先锋人物,其中5位策划者,20位企业先锋。

  其实,25位之外还有更多的人默默在芯片业内耕耘,但是由于人力、时间的限制和这些企业家含蓄的个性使我们无法求全。但是请记住:他们是中国信息产业发展过程中的重要见证;他们通过个人的努力和创造性的工作,为中国信息产业的发展做出了特殊的贡献;他们的思想和行动体现了新观念、新潮流,代表了未来中国信息产业的发展态势;他们有杰出的管理才能和业务水平;他们有孜孜不倦的敬业精神和开拓创新的工作作风;他们有独特的个人魅力和生活品位......

  “中国半导体产业的春天已经到来”,这是业内人士的共同感受。这是希望的呼声,不但因为产业持续增长,市场潜力无限,更因为一大批初具规模、具有竞争力的企业和这些颇有影响力的企业领军人物,已成为中国芯片产业的中坚力量,他们不但创造了杰出的业绩,更承载起中国芯片产业的未来。

  中国IC产业5位策划者

  王阳元

  个人档案 今年70高龄。曾任电子部微电子司副司长,现任北京大学微电子研究所所长,中科院院士,中芯国际董事长。

  业界地位 他主持研究成功中国第一块3种类型1024位MOS动态随机存储器,是中国硅栅N钩道MOS集成电路技术开拓者之一。

  业界评价 具有战略眼光的IC专家。

  郑敏政

  个人履历 现年60岁,曾任信息产业部电子信息产品管理司副司长、中国IC业主管官员。现已经正式退休,专任中芯国际执行顾问。

  做事风格 从来就是专心干一件事情,从来不在社会上兼职,即使退休了也一样。据说中国半导体协会邀请他去,他没有答应。

  业内评价 一位行事非常尽职非常低调的官员,IC行业专家,多年来关注中国IC产业的发展,并主持中国IC产业的调研。

  江上舟

  个人履历 曾任上海市经委副主任,上海市委副秘书长,主管IC的调研、规划工作,为引进中芯国际的策划者之一。

  业内地位 上海IC产业规划的重要组织者。江上舟早在1998年就提出上海要大力发展IC产业,上海在“十五”至少要搞10条芯片生产线。在当前被称为是个“异想天开者”,但是现实的发展印证了他的大胆计划正在突破:上海的生产线肯定要超过10条。

  马启元

  个人履历 现为上海时代创投董事长及执行总裁,曾为哈佛大学副教授,香港大学副教授及美国IBM、GE、TRW及DUPOND等公司顾问。

  业内地位 马启元为中芯国际的共同发起人和顾问。马博士直接投资与组建6家电子信息企业,包括鼎芯半导体、芯华微电子、美迪尔多媒体、侠客行软件、优力星通讯技术公司及华之芯半导体公司。马博士建立了“海外科技创新园”,开创了风险投资与初创期科技企业孵化器相结合的“张江模式”。

  梁胜

  个人档案 1966年生,湖南泊罗市人。1988年毕业于华中理工大学,2002年获中国人民大学产业经济博士学位现任北京工业促进局电子信息产业发展处处长。曾任北京市经济委员会分别担任过办公室副主任、科技处处长

  业内评价 从1999年就任经委科技处处长起,就开始关注IC产业,北京IC产业的方案规划设计者,四处奔走的梁胜为招商引资游说到硅谷,人送外号——“chip梁”。

  中国IC产业20位企业先锋

  邓中翰如鱼得水

  在成千上万名“海归”人士中,邓是个“大福大贵”之人:上学时候专业选得好——主要学的就是电子;毕业工作到硅谷,赶上“创业热”;不久又得到中国信息产业高层人士的厚爱,加上中国IC业急速发展,总之,“天时、地利、人和”,全让他占上了。

  一、个人档案

  性别年龄 男,36岁,1968年生于南京。

  目前职务 中星微电子公司董事长

  知识结构 中国科技大学毕业,曾获美国加州大学伯克利分校电子工程学博士、经济管理学硕士、物理学硕士3个学位。

  市场理念 “越是核心技术越要与市场结合,因为它的控制面宽。”

  创业履历 1997年,邓中翰加入IBM公司,做高级研究员。美国硅谷半导体公司Pixim, Inc 的创始人,曾任国际商业机械公司(IBM)高级研究员,清华大学兼职教授。与国家信息产业部共同在北京中关村创建了中星微电子有限公司。

  二、公司轨迹

  成长经历 5年前,信产部副部长曲维枝到美国硅谷考察,经由全国人大副委员长周光召的介绍,会见了留美芯片专家邓中翰博士。达成共识后,邓同一批海外留学生回到中国组建中星微电子有限公司,由邓任总裁,在信产部的支持下,启动了“星光中国芯”工程。

  业内地位 成功地开发出中国第一个打入国际主流市场的“中国芯”-“星光系列”芯片。

  成功模式 “硅谷样板+政府支持”:“硅谷样板”是指围绕市场需求,以高新技术攻关,引入风险投资机制创新,以市场驱动走向世界;“政府支持”主要是指政府给予一定先期投资,并提供相关保障。

  发展目标 2004年达到全球60%的市场占有率。

  陈向东游走自如

  陈向东辞职后几乎是一帆风顺——想创业的时候遇到有资金的台资企业,然后靠技术和管理实力要求对方履行合作之初的口头协议、为成立自己的公司取得原始资本,又躲过创业板上市未遂的危机成功到达主板……然而,偏偏他的老东家华越就不给他“面子”——如今身价上亿的他不知是否意识到,“华越”是他个人品牌一时难以逾越的“坎”。

  一、个人档案

  性别年龄 男,42岁,1962年生。

  目前职务 杭州士兰微电子股份有限公司

  总经理

  知识结构 1982年毕业于复旦大学物理电子半导体专业。

  创业履历 1982年11月至1988年9月在甘肃国营第八七一厂工作,任技术员、八七一厂绍兴分厂车间副主任,1988年10月至1994年2月任华越微电子有限公司常务副总经理。1994年4月27日,台资企业杭州友旺电子有限公司成立。陈向东等7人全面负责该公司电子产品设计、生产管理、市场营销工作。1997年9月25日,陈向东注册成立自己的公司——杭州士兰微电子有限公司。

  二、公司轨迹

  成长经历 台商高耿辉准备投资50万美金在内地成立一家主营集成电路的公司,他看中了陈向东的能力。因而承诺在陈向东等人没有一分资金的情况下,分40%新公司的股份给他们,鉴于当时政策,规定个人不能占有台资企业的股份,双方只是口头约定。新公司友旺发展的势头很好,但陈向东想把股份转过来。而按照国家政策规定,公司之间的股份转让是可以的。于是,陈向东等创业“七君子”拿着东拼西凑来的350万元注册成立了杭州士兰微电子有限公司。

  业内地位 完全以民营资本独立投资兴建了中国第一条集成电路芯片生产线。

  成功模式 借2001年世界芯片产业进入回调期的时机,士兰微电子利用低谷期投资成本较低等有利时机,以较低价格引进一条芯片生产线,2002年年底,属于士兰微电子的一条6英寸、5英寸兼容0.8微米的集成电路芯片生产线在杭州建成投产。这使士兰微拥有了集成电路领域利润最为丰厚的两块业务——芯片设计与制造,具有设计与制造的协同优势。

  张汝京挑战张忠谋

  戴廉价的电子手表,出门开二手车,老友来访,喜欢在家中款待,笃信基督教,在来大陆前,他将从台湾股票上赚的钱全部捐出用于慈善事业——这样的张汝京:在许多人的眼里是一个典型的冒险家,其“野心”张显——建一个庞大的芯片帝国,如今在投资者眼中的张汝京则是他们未来的“财神”,更是让台积电的张忠谋坐立不安的挑战者。

  一、个人档案

  性别年龄 男,出生于江苏省南京,一岁时随家去了台湾。

  目前职务 中芯国际董事长兼首席执行官

  知识结构 台湾大学机械系毕业,后赴美国留学,获美国纽约州立大学水牛城分校工程学硕士和德州达拉斯南美以美大学(SMU)电机系博士。

  创业履历 在美国德州仪器工作时,后来创办台积电的张忠谋是他的上司。在此期间,他曾从事多项半导体 芯片制造厂的建设、技术转移、开发和商业经营等工作,被誉为改芯片厂的高手。1997年张汝京回台湾创办世大半导体公司,2000年世大被台积电合并。不久,张汝京卖掉世大的股票和美国的多处房产回到大陆,选择上海浦东的张江为创业基地。2000年4月,中芯国际在上海成立。

  言 论 台湾当局的一纸处罚传真后,张汝京说:“他们的目的就是要为难我们。他们不希望看到内地半导体产业的兴起。”

  二、公司轨迹

  成长经历 数年前,张汝京曾在台湾一手创办世大积体电路公司,但身为总经理的张汝京事先没有听到任何风声,而大股东将世大卖给了台积电。这对于张汝京来说是一次重大的打击。成为他创办中芯国际的最佳理由。

  市场角色 工艺技术水准达到铜制程0.13微米,是中国内地投资最大、技术最先进的芯片制造企业。国内第一家0.18微米芯片制造商。正在兴建中国首座12英寸晶圆厂。

  业内地位 据美国市场研究公司i-Suppli的统计,2003年全球半导体委托生产的排名,中芯国际首次进入世界前十名。据公司公布的数据,中芯国际2003年世界排名第七。

  发展目标 明年年底每个月的产能预测将达到185000片,超越新加坡的特许半导体。

  王芹生 手握大旗

  “打造一亿美元的中国集成电路设计公司”,这是王芹生喊出的第一个口号。作为一名杰出的女性管理者,王芹生搞科研、管公司,步步到位。但我们还可以往深里看——她想的是领导整个行业。

  一、个人档案

  性别年龄 女

  目前职务 中国华大集成电路设计有限责任公司副董事长,北京中电华大电子设计有限责任公司董事长。

  知识结构 1964年7月,王芹生毕业于北京航空学院计算机系。之后,又先后参加了美国电子部高级管理人员训练班、德国柏林高级管理人员培训班以及美国Motorlorla高级管理人员培训班等。

  市场理念 她提出的集成电路设计属于软件开发范围的观点得到有关部门采纳。

  创业履历 1988年7月至1990年8月在原机械电子工业部计算机司担任副总工程师兼处长。1990年9月至2002年6月,担任中国华大集成电路设计中心总裁。2002年担任中国华大副董事长。主持和领导了华大“908工程”、“工程研究中心”、“909工程”项目建设,这些工程建设为华大形成规模发挥了重要作用。

  言论 “一场芯片设计领域的革命正在酝酿之中。”

  二、公司轨迹

  成长经历 北京中电华大电子设计有限公司(“华大电子”,Huada Electronic Design Inc. Ltd.,HED),是由业界知名企业中国华大集成电路设计中心(“中国华大”,China Integrated Circuit Design Center, CIDC)经改制重组于2002年5月。

  业内地位 国内唯一的集集成电路(IC)设计、系统应用开发和设计工具开发为一体的综合型IC设计公司。承揽多项国家重点集成电路品种开发和应用项目(47个专题),如中国第一台高档位八位单片机、第一块智能卡(CPU)芯片及系列产品等。

  发展目标 做中国IC设计业的领跑者。

  急先锋王国平

  带领一个面临严重危机的中国最大的民族微电子企业,神话般地卸掉巨额亏损包袱,王国平无疑是国企改革的急先锋。

  一、个人档案

  性别年龄 男

  目前职务 华润微电子有限公司总经理

  知识结构 1979年9月至1986年7月于电子科技大学微电子系攻读本科和研究生。

  市场理念 提出了“三年再造”设想。

  创业履历 1998年9月至1999年7月担任中国华晶电子集团公司常务副总经理,主持公司日常工作。1999年7月至2002年12月担任中国华晶电子集团公司总经理。2002年12月19日领军华润。

  言论 “让华润芯进入中国的每一个家庭。”

  二、公司轨迹

  成长经历 1998年,面对严重亏损的公司,王国平大胆地提出了“三年再造”设想。2002年,全球半导体市场整体趋淡,而恰恰就在这一年,公司终于摘掉了年均亏损1.5亿元的“亏损帽子”。2003年,公司经营业绩大幅攀升,预计营业收入逾10亿港元,经营利润超亿港元。

  业内地位 占据国内消费类集成电路和分立器件企业首位。

  发展目标 2010年营业额50亿元。

  魏少军谱写“小鳄”

  序曲

  相比聒噪的媒体轰炸,同时也是清华大学教授的魏少军更倾向于静水流深。那是一种平和的心态,在成功的边缘一品清茶,静看花开花落、云卷云舒。然而,今年上半年,受中国电信分拆影响,大唐电信净利跌94%。也许对魏少军来说,喝茶并不是一件容易的事。

  一、个人档案

  性别年龄 男,44岁

  目前职务 大唐电信科技股份有限公司

  总裁

  知识结构 1984年获清华大学无线电电子系工学硕士学位。1991在比利时蒙斯理工大学微电子实验室获工学博士学位。

  市场理念 “ 小企业的定位可以帮助大唐继续赢得政府的支持。”

  言论 痛陈中国集成电路产业现状:“加工”是中国信息产业的主要标志,缺“芯”少魂是中国信息产业的主要标志,“打价格战”是中国信息产业的主要标志,缺少专利技术和标准是中国信息产业的主要标志。

  二、公司轨迹

  创业经历 大唐微电子从当初9个人组成的一支弱小队伍起家,经过5年发展达到今天6亿元的规模,无疑是成功的典范。他们遵循“实事求是,面向市场”的理念,选择极不起眼的电话IC卡切入市场,并不断突破,成为国内最大的电信智能卡芯片供应商。

  业内地位 作为中国电信业“巨大中华”的一员,拥有九十五亿资产的大唐在国内绝不是个小企业。2001年,大唐电信入选《福布斯》杂志评选的“全球最佳小公司”。

  市场角色 大唐微电子开发出一系列具有自主知识产权的技术与产品,并成功产业化,成功研发了中国第一枚IC电话卡芯片,占有手机SIM卡、UIM卡中70%的高端市场份额。

  核心业务 大唐微电子已经形成了拥有完全自主知识产权且国内领先的以SP30iEX为核心技术的交换接入产业、以SCDMA为核心技术的无线产业、以SOC为核心技术的芯片产业、以芯片为核心技术的终端产业、以运营支撑为核心技术的软件产业以及移动产业等六大产业。

  发展目标 一旦TD-SCDMA成为未来中国的3G标准之一,出于大唐在TD-SCDMA的地位,诸多的手机厂商将纷纷向大唐微电子采购TD-SCDMA芯片。

  刘幼海创利润奇迹

  半导体行业海归派也不在少数,但刘幼海却堪称典范。他交出的“卷子”大约是最令资方和员工满意的,甚至得到了行业的认可。对于眼下寄居在大城市的“海带”而言,刘幼海因是其事业的追求目标。

  一、个人档案

  性别年龄 男,1954年出生。

  目前职务 上海先进半导体制造有限公司

  总裁

  知识结构 1982年获美国伯克利加州大学博士学位。1982年进入美国贝尔实验室任研究员。

  市场理念 选择竞争者相对较少的模拟、功率、智能卡工艺领域。

  创业履历 1995年从硅谷回到祖国的刘幼海,进入上海先进半导体制造有限公司,任生产副总裁。上任第一年,先进半导体的产量激增96%,迎来了历史上第一个赢利年。2000年,刘幼海正式接任先进半导体总裁职务,在他的领导下,上海先进半导体也成为国内第一家专业的集成电路代工企业。在短短的几年时间内,企业的规模和产量由2000年的2亿美元投资,增加到2002年的10亿美元。

  二、公司轨迹

  成长经历 先进的前身是上海飞利浦半导体制造有限公司,成立于1988年,1995年加拿大北方电讯公司加盟后。正式易名为上海先进半导体制造有限公司。也就是从这时候开始,先进半导作开始了从产品100%提供给飞利浦转变成芯片代工企业(foundry)。 2000年,先进半导体的5英寸和6英寸生产线的产能是月产3.5万片芯片,截至目前,已上升到月产8万片。

  业内地位 国内最大的芯片制造公司之一。在全球芯片市场上,先进半导体最为人称道的是它的良好流利记录。

  发展目标 使8英寸芯片生产线技术水平提高到0.18微米,这也是目前全球市场上最主流的生产技术。

  郑茳步生莲花

  从学生到留校任教授,从院长到外企顾问,从外方代表到民营企业家,郑茳以一人之身完成了许多人的梦想。在学校时,因为接待摩托罗拉亚太总裁而步入跨国公司;做摩托罗拉与中国的谈判代表时,看到了“国芯”的下一步而跳入商海,郑茳的经历告诉我们也许我们每抬一下脚,就有一个机会……

  一、个人档案

  性别年龄 男,38岁。

  目前职务 意源微电子技术有限公司

  董事长

  知识结构 1985年东南大学本科毕业,随后攻读硕士博士学位,现为博士生导师。

  市场理念 要在国内做最高水平的IC设计企业,走高端路线。

  创业履历 摩托罗拉公司的亚太区总裁到东南大学无锡应用科学工程研究院来参观访问,郑茳作为院长接待总裁相识,后任职摩托罗拉建设计中心。摩托罗拉公司和中国信息产业部谈判关于CPU技术转让事宜,郑茳是摩托罗拉参与谈判的代表之一,他在摩托罗拉公司领导国际最先进的0.13微米芯片的设计。协议签署后,这位摩方的技术大将突然有了自己的想法,技术转让了,但谁来在这个基础上搞进一步的研发,将它转变为具有中国知识产权的核心技术和产品呢?于是他辞去摩托罗拉的职务,筹建意源微电子。

  言论 政府官员的思想解放已没有问题,关键是民营经济的政策要落实好。

  二、公司轨迹

  成长经历 意源公司在开始创办时,选择了信息安全这样一个领域,这是国外公司所难以进入的,这一点又是中国非常需要的,在这一个方面进入了一个比较好的领域。投资控股了苏州国芯公司,苏州国芯公司是一个以CPU设计为已任的一个公司,这个CP设计技术得到了信息产业部及部长的支持。同时投资控股了合肥工大的微电子应用研究所。

  业内地位 研制开发的“中国芯”,是一种32位嵌入式CPU,主要用于信息家电、手持电子设备、通讯、汽车、PDA和一系列电子产品。

  发展目标 构建一个专业化的、商业化的IP库。

  方培琦受命于危难

  华虹也在劫难逃——这是总裁方培琦刚一上任,就要面对的极大挑战。要想摆脱亏损的局面,必须实施一系列重大的战略调整。这毫无疑问需要的是一个意志坚定的领导者。

  一、个人档案

  性别年龄 男,1961年。

  目前职务 上海华虹(集团)有限公司

  总裁

  知识结构 工商管理硕士。

  市场理念 定位于专门化的代工企业,专注于一些附加值较高,市场售价合理的产品。

  创业履历 全球半导体市场的低迷,让刚刚上路的上海华虹(集团)有限公司也在劫难逃。总裁方培琦一上任,就面对极大的挑战,为摆脱亏损局面,其实施一系列重大的战略调整,使华虹NEC今年下半年有望盈利。其历任上海雷磁厂厂长、上海精密科学仪器有限公司总经理、安捷伦上海有限公司副董事长、京瓷上海有限公司副董事长。

  二、公司轨迹

  成长经历 华虹NEC是1997年华虹集团与日本NEC等合资组建,后几年一直亏损。去年底和今年初公司分别引入美国捷智(JAZZ)半导体公司和海贝岭股份有限公司为其股东,注册资本亦增至8.94亿美元。

  业内地位 中国第一家八英寸芯片生产厂。

  发展目标 香港上市

  专注独行黄学良

  国微电子的“资本”不少,而其“芯” 划也很大。用黄学良的话讲就是——在“微”的世界里,国微人将用自己的聪明才智在中国集成电路产业发展的版图上增添绚丽色彩。

  一、个人档案

  性别年龄 男

  目前职务 深圳国微电子公司总裁

  知识结构 毕业于东南大学。

  市场理念 在市场推广上,更多地向代理商/分销商体制倾斜。一来核心竞争力在IC设计上,而销售和市场推广是分销/代理商的核心竞争力;二来收款问题也比较容易解决。

  二、公司轨迹

  创业经历 由国家开发投资公司、深圳市先科企业集团共同投资组建,总投资1亿元人民币。国微电子股份有限公司从1998年底就开始了数字电视相关产品的跟踪和研发,在数字电视信道、信源芯片、机卡分离条件接受模块(CAM卡)主芯片的设计和整体解决方案上积累了相当的经验和丰富的产品。2004年6月,国微向市场供应“机卡分离”接收机配套的CAM卡。

  业内地位 首家国家“九○九工程”集成电路设计公司,拥有HDTV专用芯片知识产权。

  成功模式 采用无工厂半导体公司(FABLESS)模式运作。

  发展目标 未来将加强系统设计能力,即为客户提供交钥匙解决方案的能力,不仅要向客户提供我们设计的芯片,还要向他们提供系统的整体解决方案。

  林涛要征服大市场

  个性宽厚率直的林涛不乏进取之心,以其在硅谷十几年的工作经验,领导一支由硅谷设计团队和国内团队相结合的创业队伍,在中国半导体研究领域游走从容自如。林涛瞄准的下一步是国内还是国外市场呢?

  一、个人档案

  性别年龄 林涛,男,46岁

  目前职务 上海芯华微电子有限公司总经理

  知识结构 日本国立东北大学博士

  市场理念 “及时开发顺应市场和技术发展的时代大潮流的产品,才能在市场的海洋中破浪前进”。

  言论 人类已进入信息社会。人类信息社会在经历了20多年的PC时代之后,正在进入所谓的后PC时代。后PC时代的最主要特征之一就是从传统的单一的数据信息处理发展成为包括文字、图形、音频和视频在内的多媒体信息的实时处理。因此,多媒体处理器将取代CPU成为信息社会新时代的代表性集成电路芯片。

  二、公司轨迹

  创业经历 1988年起在美国硅谷著名半导体公司IDT、PMC-Sierra、Cypress、NeoMagic等工作,任多项高级技术和管理职务。获国际发明专利22项。2002年回国创办上海芯华微电子有限公司,担任技术总监,后担任总经理。

  业内地位 芯华微电子与同济大学超大规模集成电路研究所合作研制成功的“神芯I号”( 3G多媒体手机SOC核心芯片及其设计平台)和“神芯II号”( 高位高速数模转换器DAC)在业内领先。

  市场角色 芯华微电子正在将一系列具有自主知识产权的技术与产品产业化,推向市场。已完成产业化开发的高位高速数模转换器DAC系列芯片可广泛应用于DVD、数字电视、机顶盒等多媒体电子产品中,其性能优越于国外同类产品,具有广阔的市场前景。

  核心业务 主要从事多媒体处理器芯片、软件和系统的研发,设计和销售。

  徐中佑500年等一回

  徐中佑提出了一个500年世界经济发展大轮回的新理论:500年前中国是世界高科技的中心,当时,中国拥有四大发明。到了17、18世纪,英国因工业革命成为日不落帝国。19至20世纪,美登上科技霸主地位。到了70、80年代,日本半导体、汽车、家电称霸全球。到了21世纪,“高科技”这艘船重回中国本土,海归派回到祖国,能赶上这个500年一遇的机会,感到十分荣幸。——看了徐中佑的理论,大概每个中国人都喜笑颜开。

  一、个人档案

  性别年龄 男

  目前职务 厦门联创微电子股份有限公司

  董事长兼总经理

  知识结构 1968年毕业于哈军工电子工程系; 1987至1990年在美国纽约州立大学石溪分校计算机系从事三维实时图象处理系统集成研究。

  市场理念 选择国外大公司顾不上、国内小公司够不着、3C产业又迫切需要的。

  创业履历 1991至1997年6月任原电子工业部47所副所长兼总工程师,从事集成电路和微计算机研究20多年; 80年代设计中国第一台LSI芯片微机辅助测试系统和便携式LSI通用测试仪;1997年在厦门市科委的支持下创建了厦门微电子集成技术研究中心。

  二、公司轨迹

  成长经历 厦门联创微电子股份有限公司是厦门微电子集成技术研究中心(XMIT)与厦华、夏新等电子龙头企业于1999年12月联合创建的高新科技研发型企业。主要从事大规模集成电路设计及其应用产品开发。

  业内地位 国家“九五”重点科技攻关项目——微控制器系列产品开发的主要承担单位,成功开发了具有自主版权的四个产品系列、三十多种新产品,其中三项获国家专利广泛应用于电脑、数字高清晰电视和大小家电消费产品之中的产品具有很强的竞争力和市场前景。

  发展目标 已完成上市辅导,计划在时机成熟后尽早争取上市。

  赵广民精雕细琢

  珠海虽然离深圳等热点城市不远,却是一个“闹中取静”之地,赵广民就是在这里塌下心来做了些事儿。他讲究一个 “精雕细琢”,炬力显然秉承了这个特点。

  一、个人档案

  性别年龄 男

  目前职务 珠海炬力集成电路设计有限公

  司总经理

  知识结构 毕业于西安交通大学。

  市场理念 IC设计最为关键的环节在两端——一个是前端与系统设计沟通的部分;一个是后端与工艺结合、凭借经验优化设计的过程。后端的版图优化设计是炬力的“看家本领”。

  言论 “对于今天中国的fabless来说,一旦在市场上站住了脚,就将直接面对国际竞争。国内与国际概念上的隔墙已经不复存在了。”

  二、公司轨迹

  成长经历 由一群对IC设计行业充满***并且有着无穷创造力和卓越的IC设计经验的经营团队与境外著名的IC设计企业共同创立的IC设计公司,总投资1000万美元。主要从事超大规模集成电路的设计开发和测试生产。于2001年12月正式成立,目前拥有从业人员近百人,其中技术开发人员占80%以上。

  业内地位 拥有MP3 SOC芯片及完整解决方案、全系列数字电能表IC芯片组、电视娱教产品SOC芯片及完整解决方案等,因此珠海炬力在2002年还没有销售额的情况下,仅2003年一年就开始实现产品营收4600万元。

  发展目标 今年珠海炬力的销售收入突破亿元。

  施雷:优秀是我的一种习惯

  据说,每一位打算来大陆考察的台湾半导体大佬都会得到同行的建议,一定要去见见施雷。而施雷的建议恐怕是遵守“丛林法则”。“狼羊之分”是“丛林法则”的第一条。要做狼,就不能有任何动作上的浪费——动作浪费就是体能的浪费,要学会清楚地“嗅”到目标的方位,事先准备,然后静悄悄地逼近猎物,最后是闪电一击。狼这么做或许出于本能,但考察其系列动作,就会发现与缜密的理性思维的结果如出一辙。着也是施雷的习惯行为。

  一、个人档案

  性别年龄 男,1967年2月出生

  目前职务 上海复旦微电子股份有限公司

  董事、总经理

  知识结构 硕士

  市场理念 施雷从一开始就给了复旦微电子一个干净的架构,提出 “用做一个杂货铺小店的概念,来做一家国际型大企业”的思路。

  创业履历 1998年,施雷任总经理的上海商业投资公司下属信托投资公司出资380万,复旦大学以国家级集成电路与系统实验室的无形资产折合370万,加上施雷及他的团队个人筹集250万,凑足1000万元人民币注册成立了复旦微电子股份有限公司。施雷甚至辞去了自己原来的官员职务,担任新公司的董事总经理一职。

  言 论 “我们要狼,不要羊。当然太多的羊,我们也不能完全清除,我们已经清除得太多了。每一次清除都会引发出动荡,让人觉得你无情无义。”

  二、公司轨迹

  成长经历 这家被施雷自称为“中国最小的股份有限公司”的集成电路设计企业,成立刚满2年,就在香港创业板成功上市,筹集资金1亿港元,成为国内唯一一家集成电路设计上市公司。在复旦微成立以前,上海很难找到专业的集成电路设计企业的影子,复旦微在港上市成功的效应是:上海一夜之间涌现了四五十家芯片设计企业。它的灵活机制和背靠的巨大市场,使台湾集成电路业界开始频频注目上海这家轻量级电路设计企业。

  业内地位 以8K加密存储卡芯片为代表的智能卡芯片,使上海金卡工程完全有了跳动的“中国芯”,并已向海外客户大量供货,与西门子、飞利浦等半导体巨头直接竞争。公司首创的FM1062通话芯片成为军用保密电话的定型芯片。

  成功模式 理性思维,自由创造。

  “革命党”陈凯

  “我们不能跟‘在野党’一样来个小修小补,锦上添花,我们得拿出‘革命党’的气魄来突破创新﹗”说这话的陈凯无论从气质还是气魄上来讲,的确跟“革命党”有一比。

  一、个人档案

  性别年龄 男, 42

  目前职务 Comlent(美资)公司董事CEO兼鼎芯半导体(上海)有限公司董事长和CEO

  知识结构 清华大学(北京)学士,美国Purdue 大学(West Lafayette)硕士和伯克利加大(UC Berkeley)半导体专业博士学位。

  市场理念 产业化是检验公司的唯一标准。新闻发布是公关,卖1,000万颗才是产业。

  成功模式 依据田忌赛马的原理,“以己之长,克敌之短”,以鼎芯先进的RFIC设计技术去攻克国外大厂商所不愿意专注的市场 ;通过芯片高度集成来实现巨额成本的下降 。

  创业履历 2000-2001年创建美国IT公司BESTeDEAL.com Inc,2002担任CEO至今;创建COMLENT,并担任董事CEO; 创建鼎芯半导体(上海)有限公司董事长兼首席执行官。

  言论 "我明年这个时候还回来,我相信第三轮投资会更成功﹗"

  二、公司轨迹

  成长经历 2002春天,艰难的开始,筹备公司;2002夏天,7月在上海张江高科技园区注册成立鼎芯; 2002冬天,结束第一轮融资,融资近200万美金; 2003冬天,被海外著名机构投资机构认可;2004春天,融资750万美金,投资者包括Intel Capital,3i,DFJ等。 2004夏天,已开发了无绳电话,“小灵通”芯片,即将进入量产。

  业内地位 国内第一家射频集成电路设计企业。目前完成了中国第一款全集成的射频集成电路(RFIC)收发器(Transceiver)的研发并将于近期逐渐进入大规模量产,这是中国在无线通讯手机芯片核心技术领域的重大突破。

  核心业务 开发和销售各类无线通讯终端的射频集成电路收发器(Transceiver),应用包括3G手机,“小灵通”,无绳电话等。未来应用还将涉及高清晰度电视(HDTV,DTV)调諧器,无线局域网(WLAN),全球卫星定位系统(GPS)等 。

  发展目标 针对中国移动通讯市场规模最大的RFIC集成电路设计企业。

  郑明:沉默是金

  在google的强力搜索中,有关郑明的条目寥寥可数,这位以技术起家的工程师总经理,面对媒体的日日逼近,低调的保有了自己的本来面目。

  一、个人档案

  性别年龄 男,1962年1月出生。

  目前职务 无锡华润矽科微电子有限公司

  总经理

  知识结构 工学硕士学位,教授级高级工程师。

  创业履历 于2000年1月起历任无锡华晶矽科微电子有限公司总经理助理、设计所常务副所长,无锡华润矽科微电子有限公司常务副总经理、总经理。多年从事微电子技术研发工作,致力于 ASIC设计与服务平台的建立、集成电路开发和工程化管理、微控制器的设计和学科发展、模拟电路设计学科的建立和引导、集成电路设计公司的管理等。其主持的研究项目曾获国家、部和省的科技进步奖。先后被评为无锡市突出贡献中青年专家、政府特殊津贴专家。

  二、公司轨迹

  创业经历 无锡华润矽科微电子有限公司(华润矽科)是香港上市公司——华润励致有限公司[1193]旗下的一家消费类集成电路和SoC设计开发公司,是国家重点高新技术企业。公司控股建设江苏省集成电路设计工程研究中心——无锡盈泰科技有限公司,控股深圳华润矽科微电子有限公司。

  业内地位 2003年收入增幅最大的公司中名列第五。

  成功模式 面向消费类整机电子产品市场,重点发展芯片设计、芯片制造、芯片测试及芯片封装四大板块业务。

  郑少波宁愿做“疯子”

  有着典型工程师朴素特质的郑少波,却在“选择半导体创业的是疯子”的环境下做了一次“疯子”,8年前,郑少波与另外6位创业伙伴,成立了杭州友旺电子。8年后,杭州友旺跃居中国最大IC设计公司。而当人们看到今天的友旺、士兰微后,恐怕都想疯狂一回。

  一、个人档案

  性别年龄 男,生于1965年。

  目前职务 杭州友旺电子有限公司总经理

  知识结构 就读于江苏杭州大学,硕士。

  创业履历 创业前,郑少波曾任甘肃第八七一厂绍兴分厂技术员、三英寸芯片生产线车间主任。后来,又在中国晶圆厂鼻祖绍兴华越工作了6年。直到预测中国半导体市场终将起飞后,与6位同事一同出来闯天下。筹了一千多万台币的资金,成立了一家IC设计公司。车库级的破旧办公室,名之为“六星级宾馆”,就这样创建了今天的友旺和士兰微。

  言论 “大陆半导体产业和台湾的落差极大,并非短期内可以改变。”

  二、公司轨迹

  成长经历 杭州友旺电子成立于1994年,是和台湾友顺科技共同合资成立的公司,专门生产双极型IC。1997年,同样的创业团队又成立了士兰微电子,专门从事比较高阶的半导体制程研发,产品主要运用在电话机、锂电池和音响等消费性产品。友旺和士兰去年度的营业额分别是2.1亿和2.4亿人民币,成立短短的几年期间,已跃居中国最大的IC设计公司。

  业内地位 友旺2000年营业额已高达约4.4亿人民币,稳坐中国IC设计第一的宝座。

  发展目标 未来友旺和士兰的业绩成长动能,将主要来自新产品的开发。

  陆宁的难处

  陆宁的难处就是国企老字号的难处。以“华”字头命名的华大、华虹、华晶(现为无锡华润)、华越,是中国半导体产业大军中特殊的团队,他们在一定意义上担当着“国家队”的角色,他们的每一点发展和变化,格外受到业界的关注。而这也使陆宁们的路走的格外小心。

  一、个人档案

  性别年龄 男

  目前职务 华越微电子总经理

  市场理念 倡导绿色环境理念,在一切生产经营活动中,精细管理,矢志追求与大自然和谐相处。

  二、公司轨迹

  成长经历 作为国家“六五”期间“老牌”的华字企业,静悄悄地发生着变革。1999年-2003年的4年中,华越集成电路芯片产量的增长超过300%,销售收入增长近300%。华越的发展道路却并不平坦,2001年华越仍处于亏损的局面,2002年9月,经资产重组,华越改制成为有限责任公司。组建了由华越控股、具有独立法人资格的浙江华越芯装电子股份有限公司和绍兴芯谷科技有限公司,通过在调整中发展、在发展中调整的策略,使这家老字号的国企走上了高效投入、快速扩张、逐步发展的道路。

  业内地位 华越微电子有限公司是专业从事集成电路、分立器件加工制造的大型骨干企业,是国家集成电路重点发展的五大支柱企业之一。其控股的绍兴芯谷科技成为业内增长最快的公司之一。

  成功模式 改革是惟一出路。

  周旗钢直击市场

  创业是艰难的,科技企业的创业尤其艰难。而作为从科研院所转型的“有研硅股”对“艰难”二字更有别样的理解。令人庆幸的是布瑞恩.阿瑟的话:以知识为基础的市场,青睐第一个击中它的人。周旗钢深得其味,“我相信,‘有研硅股’就是第一个击中它的人”。

  一、个人档案

  性别年龄 男, 1963年12月生于内蒙古包头。

  目前职务 有研半导体材料股份有限公司

  (“有研硅股”)总经理

  知识结构 清华大学学士、硕士研究生。

  市场理念 技术一流,品质一流,服务一流。

  创业履历 1989年于清华大学材料工程专业硕士研究生毕业后,被分配到有色金属研究总院401室(后为半导体中心、“有研硅股”)工作,先后任有色金属研究总院401室区熔单晶组组长、半导体材料国家工程研究中心副主任、主任;北京金鑫半导体材料有限公司副总经理、总经理。1999年3月起担任有研硅股副总经理,2000年8月起担任总经理。

  言论 “创业是艰难的,科技企业的创业尤其艰难。”

  二、公司轨迹

  成长经历 有研半导体材料股份有限公司(股票简称“有研硅股”)是北京有色金属研究总院独家发起,以募集方式设立的股份公司。北京有色金属研究总院将其与单晶硅、锗、化合物半导体生产、科研、销售相关的资产和业务投入有研硅股。有研硅股于1999年2月8日宣告创立,3月19日在上海证券交易所上市。

  业内地位 1995年、1997年、1999年先后成功地组织拉制出中国第一根直径8英寸、12英寸硅单晶和5英寸区熔硅单晶。 2001年7月成功地组织拉制出国内第一根6英寸重掺磷直拉硅单晶和8英寸重掺砷硅单晶。其中12英寸硅单晶,被评为1997年“中国十大科技进展”之一,目前12英寸单晶已批量出口美国、日本。

  成功模式 科技和金融的合力推动。

  儒商闵昊

  做学术和做企业的人在价值观上有很大的差别,学术研究是满足自己的需求,做企业是满足人家的需求,两者在基本的理念和价值观上是有冲突的,闵昊正在利用现在的位置,在科研和商业价值之间找平衡。

  一、个人档案

  性别年龄 男, 1965年7月出生

  目前职务 上海华虹集成电路公司总经理

  知识结构 1991年获复旦大学博士学位

  创业履历 1995-1998年在美国斯坦福大学任高级访问学者。1999年起任ASIC和系统国家重点实验室主任。兼任“华虹集成电路设计公司”总经理,“863专家委员会”委员,中国电子学会高级会员。承担“8051CPU”、“FPGA仿真应用”、“CMOS图像传感器”、“IC卡研制”等项目。

  市场理念 引进在设计方面有多年经验的设计管理者,来帮助缩短设计流程,提高一次性流片的合格率和产品的稳定性。

  言论 “我做总经理是第一次,很多都不懂,不懂就学,只要你学的速度比人家快,你就一定能超过别人。”

  二、公司轨迹

  成长经历 早在1999年,公司标志性产品--SHC11018KBit非接触式IC卡芯片,就已成功应用于上海市交通一卡通工程。成为中国第一枚具有完全自主知识产权并实现规模应用的非接触式IC卡芯片。

  业内地位 华虹的优势在于不但掌握了智能卡芯片的核心研发技术,而且还率先完成了高端芯片产品从研发转向市场规模应用的过程。

  业内地位 华虹已经成为中国目前IC卡芯片用户规模最大的本土 IC设计公司,并在2002年1月成为全国5家年销售额过亿的集成电路公司中最年轻的公司。

  核心业务 设计出中国第一枚具有自主知识产权的非接触式IC卡芯片,该产品成功应用在上海交通“一卡通”工程,发卡量超过400万张。2002 年设计的SHC1201、64KB接触式CPU芯片,也成功应用于上海市社会保障卡工程,发卡量超过700万张。

  发展前景 迅速发展的智能卡产品是未来十年最具潜力和诱惑力的市场,尤其是几类应用广泛的产品会形成一个规模庞大的市场。


阅读全文(1247) | 评论:0 | 复制链接

关于四金计算和工资对照表(2006-12-24 15:58:00)

关于四金计算和工资对照表
住房公积金网站:http://www.shgjj.com
            个人缴纳部分    公司缴纳部分
养老保险金=工资×8%   +    工资×22.5%
医疗保险金=工资×2%   +    工资×12%
失业保险金=工资×1%   +    工资×2%
住房公积金=工资×7%   +    工资×7%


月总收入、四金基数、四金个人部分、扣除四金后总数、个税、扣除个税后收入(当月纯收入)
2000    2000   360      1640      39        1601
2500    2500   450      2050      80        1970
3000    3000   540      2460      121       2339
3500    3500   630      2870      162       2708
4000    4000   720      3280      217       3063
4500    4500   810      3690      278.5     3411.5
5000    5000   900      4100      340       3760
5500    5500   990      4510      401.5     4108.5
6000    5541   997.38   5002.62   475.393   4527.227
6500    5541   997.38   5502.62   550.393   4952.227
7000    5541   997.38   6002.62   625.524   5377.096
7500    5541   997.38   6502.62   725.524   5777.096
8000    5541   997.38   7002.62   825.524   6177.096
8500    5541   997.38   7502.62   925.524   6577.096
9000    5541   997.38   8002.62   1025.524  6977.096
9500    5541   997.38   8502.62   1125.524  7377.096
10000   5541   997.38   9002.62   1225.524  7777.096
11000   5541   997.38   10002.62  1425.524  8577.096
12000   5541   997.38   11002.62  1625.524  9377.096
13000   5541   997.38   12002.62  1825.524  10177.096


阅读全文(929) | 评论:0 | 复制链接

国家集成电路设计企业一览表 (2006-12-24 15:49:00)

国家集成电路设计企业一览表
1.国家集成电路设计企业一览表(北京地区)http://www.bjicpark.com

   北京华虹NEC集成电路设计有限公司
   北京华虹集成电路设计有限公司
   北京博旭华达科技有限公司
   北京宏思电子技术有限责任公司
   北京清华同方微电子有限公司
   广州市理惟科技有限公司北京分公司
   思略微电子(北京)有限公司
   北京清华紫光微电子系统有限公司
   北京九方中实电子科技有限公司
   北京中科博业科技有限公司
   北京明宇科技有限公司
   北京英贝多嵌入式网络技术有限公司
   北京神州龙芯集成电路设计有限责任公司
   北京航天伟盈微电子有限公司
   北京时代华诺科技有限公司
   北京东世半导体技术有限公司
   北京凯赛德航天系统集成设计有限公司
   北京创新天地科技有限公司
   北京秀策电子技术有限公司
   北京吴喜动态科技有限公司
   北京赛特克科技有限公司
   贵州以太家庭网络项目组
   图形芯片项目组
   北京卫士通龙马网络技术公司
   北京东兴泰思特检测技术有限公司
   北京科力测试技术有限公司
   北京东润泰思特测控技术有限公司
   北京远望经贸信息网络开发公司
   北京东越泰思特电子技术有限公司
   北京东方泰思特测控装备技术有限责任公司
   北京东英泰思特测试技术有限公司
   北京国芯安集成电路设计公司
   北京儒荣科技有限公司
   北京鑫泰维科技发展有限公司
   北京鑫世恒达商贸有限公司
   北京华贝尔兴业机电技术有限公司
   北京泛析智能控制技术有限公司
   北京世纪千里马商贸有限责任公司
   北京捷瑞泰思特科技有限公司
   北京硅普泰思特半导体设备有限公司
   北京快鱼科技有限公司
   北京精技环宇条码技术公司
   北京恩联科技有限公司
   北京天元伟业科技有限公司
   北京惠友天成科技有限公司
   HDTV测试项目组

阅读全文(1573) | 回复(5) | 引用(0)
 


6 .国家集成电路设计企业一览表(上海地区)http://www.icc.sh.cn

1 上海集成电路设计研究中心
2 新涛科技(上海)有限公司
3 上海华龙信息技术开发中心
4 华邦(上海)集成电路有限公司
5 旭上电子(上海)有限公司
6 上海清华晶芯微电子有限公司
7 盛扬半导体(上海)有限公司
8 展讯通讯(上海)有限公司
9 上海大学微电子研究与开发中心
10上海上大众芯微电子有限公司
11科广微电子(上海)有限公司
12全泰电子(上海)有限公司
13上海全景数字技术有限公司
14上海晶进微电子有限公司
15上海华虹集成电路有限责任公司
16上海爱普生电子有限公司
17华东师范大学微电子电路与系统研究所
18上海复旦微电子股份有限公司
19上海奇普科技有限公司
20华东计算技术研究所
21泰鼎多媒体技术(上海)有限公司
22上海莱迪思半导体有限公司
23百利通电子(上海)有限公司
24上海华园微电子技术有限公司
25迈世微电子(上海)有限公司
26上海科星电子有限公司
27上海复理南华信息技术有限公司
28上海海岭电子科技有限公司
29上海信语语音芯片有限公司
30上海元方集成电路咨询服务公司
31上海京西电子信息系统有限公司
32上海双岭电子有限公司
33上海海尔集成电路有限公司
34上海圣景科技发展有限公司
35上海微科集成电路有限公司
36上海方寸集成电路有限公司
37中颖电子(上海)有限公司
38上海精致科技有限公司
39智原科技(上海)有限公司
40上海大缔微电子有限公司
41上海矽创微电子有限公司
42上海上昕电子有限公司
43上海宏锐微电子有限公司
44上海豪威集成电路设计有限公司
45上海敏勤电子技术有限公司
46上海捷硕微电子有限公司
47上海众华电子有限公司
48上海英联电子科技有限公司
49上海华远集成电路有限公司
50上海申腾信息技术有限公司
51上海浦东软件园互连商务系统有限公司
52杰美特微电子(上海)有限公司
53扬智电子(上海)有限公司
54上海方元微电子有限公司
55波申光电通讯系统(上海)有限公司
56上海华杰芯片技术服务有限公司
57上海高清数字技术创新中心
58上海实用计算机应用研究所
59先驱微电子(上海)有限公司
60华腾微电子(上海)有限公司
61思略微电子(上海)有限公司
62上海奇码数字信息技术有限公司
63芯成半导体(上海)有限公司
64蔚华集成电路(上海)有限公司
65慧成(上海)集成电路有限公司
66上海新茂半导体有限公司
67上海复旦大学旦华电子科技实业公司
68同济大学中德学院
69上海交大创奇微系统科技有限公司
70鼎芯半导体(上海)有限公司
71上海明波通信技术有限公司
72智芯科技(上海)有限公司
73飞利浦半导体上海设计中心
74上扬软件(上海)有限公司
75上海力通微电子有限公司
76上海凌阳科技有限公司
77上海岭丰微电子有限公司
78安森美半导体设计(上海)有限公司
79上海岭茂微电子有限公司 :
80埃派克森微电子(上海)有限公司
81宏羚科技(上海)有限公司
82上海长江集成电路设计应用公司
83杰尔系统(上海)有限公司
84上海亦源智能科技有限公司
85宜硕科技(上海)有限公司

 


5 .国家集成电路设计企业一览表(杭州地区)

浙江朗微系统有限公司
新加坡先进电子有限公司
浙江中天微系统电子有限公司
杭州中天微系统公司
杭州杭电集成电路设计有限公司
中正生物认证技术有限公司
杭州大自然智能卡有限公司
东方通信微电子设计中心
杭州新艺高电气有限公司
杭州士兰微电子股份有限公司
杭州国芯科技有限公司
华立通信技术有限公司


 


4. 国家集成电路设计企业一览表(西安地区)http://www.xaic.com.cn

英飞凌科技(西安)有限公司
西安亚同集成电路技术有限公司
西安深亚电子有限公司
西安联圣科技有限公司
西安中芯微电子技术有限公司
陕西美欧电信技术有限公司              
西安爱迪信息技术有限公司
西安交大数码技术有限责任公司
西安大唐电信公司IC设计部
西电科大华成电子股份有限公司
西安华西集成电路设计中心
西安海容西工大信息技术公司
西安万思微电子有限公司
西安华泰集成电路设计中心
西安大智微电子有限公司
西安德恒科技有限公司
西安秦川三和信息技术有限公司
西安北斗星数码信息有限公司
西安恒拓微电子装备有限公司
西安德智科技有限公司  
西安群茂科技有限公司
西安富微科技有限公司
西安西科美芯电子有限公司  
西安海德威科技有限公司
西安和记奥普泰通信技术有限公司  
西安速波微电子有限公司  
西安秦普电子有限公司
西安电子科技大学恒益测控技术有限公司
                           
集成电路测试企业
1、 西安太乙电子中心 西安太乙电子有限公司
2、 西安西谷微电子有限责任公司
3、 西安骊山微电子有限公司高可靠器件研究室
                       
集成电路制造企业
1、 西安微电子技术研究所集成电路开发研究中心
2、 西安微电子技术研究所高可靠器件研究室
3、 西安西岳电子有限公司

集成电路封装企业
1、 西安爱尔半导体技术有限公司
2、 西安高科卫光电子有限公司
3、 西安卫光电工厂
                       
集成电路设备制造企业
1、 西安理工大学工厂
2、 西北机器(总厂)半导体设备厂
3、 陕西金山集团宝鸡金山电子设备厂
                   
半导体分立器件制造企业
1、 西安爱帕克电力电子有限公司
2、 西安卫光半导体有限公司
3、 西安赛经电子科技有限责任公司
         
半导体材料生产企业
1、 中国四佳半导体材料有限公司
2、 陕西华山半导体材料厂
3、 西安骊晶电子技术有限公司
           
集成电路技术研究机构
1、 西安微电子研究所(771)
2、 中国航空计算机技术研究所(631所)
3、 西安空间技术研究所(504所)

个人主页 | 引用 | 返回
 


3 .国家集成电路设计企业一览表(成都地区)http://www.cdicc.com.cn

成都华微电子系统有限公司
成都国腾微电子有限公司
成都威斯达芯片有限责任公司
四川南山之桥微电子有限公司
绵阳凯路微电子有限公司
成都天锐微电子有限公司
四川登巅微电子有限公司
西南集成电路设计有限公司
艾博科技有限公司
凌成科技(成都)有限公司
凹凸电子(成都)有限公司
成都德协电子有限公司


个人主页 | 引用 | 返回
 


2 .国家集成电路设计企业一览表(深圳地区)http://www.southic.com

芯微技术(深圳)有限公司
深圳市江波龙电子有限公司
深圳市剑拓科技有限公司
深圳市新世纪风舟通讯技术有限公司
天一集成电路设计(深圳)有限公司
深圳市明华澳汉科技股份有限公司
深圳矽乐电子有限公司
深圳市方禾集成电路有限公司
网泰金安信息技术有限公司
深圳市易成科技有限公司
深圳艾科创新微电子有限公司
富大微电子科技(深圳)有限公司
深圳市朗科科技有限公司
深圳市惠尔特科技有限公司
深圳市中微半导体有限公司
深圳市中兴通讯股份有限公司微电子研究所
美芯集成电路(深圳)有限公司
深圳清华大学研究院
深圳安凯微电子技术有限公司
深圳市力合微电子有限公司
深圳源核微电子技术有限公司
深圳市爱思科微电子有限公司
比亚迪股份有限公司
创系电子科技(深圳)有限公司
深圳市国微电子股份有取公司
深圳市谷峰电子有限公司
深圳市贝顿科技有限公司
深圳市中兴集成电路设计有限公司
深圳市芯邦微电子有限公司
讯利电子(深圳)有限公司
晶门科技(深圳)有限公司
深圳市中密科技有限公司
深圳市效华集成电路有限公司
深圳赛格高技术投资股份有限公司
深圳市北兴为科技开发有限公司
UT斯达康深圳研发中心
深圳市昊天旭辉科技有限公司
深圳市国芯微电子有限公司
深圳华超软件与微电子设计有限公司
深圳芯海科技有限公司
深圳市矽谷电子系统有限公司
普诚科技(深圳)有限公司
深圳市天微电子有限公司
深圳集成微电子有限公司
深圳市宝力马科技实业有限公司
深圳市爱默贝尔科技有限公司
华为技术有限公司
幻音科技(深圳)有限公司
深圳市神洲星通科技有限公司
三洋半导体公司深圳IC设计开发中心
景泰科技有限公司
珠海炬力集成电路设计有限公司
东莞理工学院研究院集成电路研究所
深圳市明微电子有限公司
深圳磊明科技有限公司
中山市创源电子有限公司
深圳群茂科技有限公司
深圳市方舟科技有限公司
深圳市长运通集成电路设计有限公司
深圳市致芯微电子有限公司
深圳市泰信电子有限公司
深圳市熙和科技有限公司
深圳市浩海腾集成电路有限公司
深圳市深傲科技有限公司
深圳佳凯特实业有限公司
智芯科技(上海)有限公司
深圳市昊元科技有限公司
天利半导体(深圳)有限公司
深圳市天光微电子有限公司
谱讯科技有限公司
建荣集成电路科技(珠海)有限公司
深圳市创建信息咨询有限公司
信息产业部电子第五所元器件可靠性研究分析中心
北京希格玛晶华微电子股份有限公司深圳分公司
深圳市汇讯电子有限公司
深圳市联德合微电子有限公司
深圳市科瑞亚集成电路有限公司
奕力半导体科技(深圳)有限公司
深圳市新世达科技有限公司
Pacific power Holdings ltd.
日本VTT株式会社深圳代表处
华南理工大学微电子研究所
中庆微数字设备开发有限公司深圳分公司
深圳市爱芯微电子有限公司
深圳市跬步科技有限公司
深圳市晶讯软件通讯技术有限公司

阅读全文(995) | 评论:0 | 复制链接

全国IC设计企业名单(2006-12-24 15:48:00)

全国IC设计企业名单(转)

统计结果
        上海地区 136 家
        北京地区 122 家
        广东地区  60 家
        江苏地区  32 家
        陕西地区  29 家
        四川地区  15 家
        浙江地区  15 家
        其他地区  27 家          
   
上海地区
1.  上海伟岭集成电路设计有限公司
2.  至益电子技术有限公司
3.  宜硕科技(上海)有限公司
4.  上海贝尔阿尔卡特股份有限公司
5.  上海交大创奇微系统科技有限公司
6.  上海汉芯半导体科技有限公司
7.  Axis Systems(上海代表处)
8.  奈米闪芯集成电路(上海)有限公司
9.  福华先进微电子(上海)有限公司
10. 德力微电子有限公司
11. 上海浦东微电子发展有限公司
12. 上海国芯集成电路设计有限公司
13. 上海东好科技发展有限公司
14. 上海旋极数码技术有限公司
15. 凯明信息科技股份有限公司
16. 旭上电子(上海)有限公司
17. 宏盛科技发展股份有限公司
18. 全泰电子(上海)有限公司
19. 上海集通数码科技有限责任公司
20. MONTEREY
21. 上海明波通信技术有限公司
22. 上海芯华微电子有限公司
23. 美国LSI逻辑国际服务公司上海代表处
24. 上海正微电子有限公司
25. 上海信卓信息科技有限公司
26. 爱斯泰克(上海)高频通讯技术有限公司
27. 冠讯科技(上海)有限公司
28. 上海强微电子科技有限公司
29. 上海全景数字技术有限公司
30. 格科微电子(上海)有限公司
31. 上海敏华微电子有限公司
32. 宝扬科技
33. 盛华微电子(上海)有限公司
34. 上海新茂半导体有限公司
35. 上海大学微电子研究与开发中心
36. 上海复旦微电子股份有限公司
37. 上海集成电路设计研究中心
38. 泰鼎多媒体技术(上海)有限公司
39. 上海高性能集成电路设计中心
40. 复旦大学专用集成电路与系统国家重点实验室
41. 鼎芯半导体(上海)有限公司
42. Cadence
43. MAS迈世微电子(上海)有限公司
44. 埃派克森微电子(上海)有限公司
45. 安谋咨询(上海)有限公司
46. 安森美半导体设计(上海)有限公司
47. 飞利浦(中国)投资有限公司上海分公司
48. 百利通电子(上海)有限公司
49. 德国惠朋有限公司上海代表处
50. 安托克微电子(上海)有限公司
51. 宏羚科技(上海)有限公司
52. 华邦(上海)集成电路有限公司
53. 华东师范大学微电子电路与系统研究所
54. 华腾微电子(上海)有限公司
55. 华亚微电子(上海)有限公司
56. 慧成(上海)集成电路有限公司
57. 杰尔系统(上海)有限公司
58. 美杰特微电子(上海)有限公司
59. 科广微电子(上海)有限公司
60. 科胜讯通讯技术发展(上海)有限公司
61. 科雅微电子(上海)有限公司
62. 新益系统科技有限公司
63. 冠捷半导体(上海)有限公司
64. 力通微电子有限公司
65. 明导(上海)有限公司
66. 上海爱普生电子有限公司
67. 上海大缔微电子有限公司
68. 上海高奇微电子技术有限公司
69. 上海高清数字技术创新中心
70. 上海海尔集成电路有限公司
71. 上海宏锐微电子有限公司
72. 上海华虹(集团)有限公司
73. 上海华虹集成电路有限责任公司
74. 上海华杰芯片技术股份有限公司
75. 上海华龙信息技术开发中心
76. 上海华园微电子技术有限公司
77. 上海豪威集成电路设计有限公司
78. 上海实用计算机应用研究所
79. 美国爱特梅尔股份有限公司上海代表处
80. 上海源笙软件科技有限公司
81. 上海亦源智能科技有限公司
82. 勇瑞科技(上海)有限公司
83. 上海交大高新技术股份有限公司
84. 上海交通大学
85. 上海捷硕微电子有限公司
86. 上海京西电子信息系统有限公司
87. 上海晶进微电子有限公司
88. 上海精致科技有限公司
89. 上海莱迪思半导体有限公司
90. 上海岭丰微电子有限公司
91. 上海凌阳科技有限公司
92. 上海麦克电子有限公司
93. 上海敏勤电子技术有限公司
94. 上海奇码数字信息技术有限公司
95. 上海奇普科技有限公司
96. 上海清华晶芯微电子有限公司
97. 上海矽创微电子有限公司
98. 上海上大众芯微电子有限公司
99. 上海上昕电子有限公司
100.上海圣景科技发展有限公司
101.上海双岭有限公司
102.上海微科集成电路有限公司
103.上海矽创微电子有限公司
104.上海信语语音芯片有限公司
105.上海英联电子科技有限公司
106.上海邮电发展总公司
107.上海众华电子有限公司
108.盛扬半导体(上海)有限公司
109.上海贝岭股份有限公司
110.同济大学中德学院
111.上海亚晨科技发展有限公司
112.芯成半导体(上海)有限公司
113.芯原微电子(上海)有限公司
114.上海掌微电子技术有限公司
115.新思科技(上海)分公司
116.艾迪悌新涛科技(上海)有限公司
117.扬智电子(上海)有限公司
118.株式会社山武上海事务所
119.优网通国际资讯有限公司
120.展讯通信(上海)有限公司
121.智芯科技(上海)有限公司
122.智原科技(上海)有限公司
123.中颖电子(上海)有限公司
124.微捷码科技有限公司
125.比利时IMEC微电子研究中心上海联络处
126.亚尔特拉国际有限公司上海代表处
127.意法半导体
128.美国国家半导体公司上海办事处
129.德州仪器(上海)有限公司
130.中星微电子有限公司上海分公司
131.游世移动通信技术(上海)有限公司
132.微芯科技咨询(上海)有限公司
133.上海元方集成电路咨询服务有限公司
134.环晶信息科技(上海)有限公司
135.上海岭茂微电子有限公司
136.上海宽频科技股份有限公司


北京地区
1.  大唐微电子技术有限公司
2.  中国华大集成电路设计有限公司
3.  北京中电华大电子设计有限责任公司
4.  方舟科技(北京)有限公司
5.  北京华虹集成电路设计有限责任公司
6.  北京中星微电子有限公司
7.  北京清华同方微电子有限公司
8.  北京六合万通微电子技术有限公司
9.  北京北大众志微系统科技有限责任公司
10. 北京奇普嘉科技有限公司
11. 北京集诚源科技有限公司
12. 北京九方中实电子科技有限责任公司
13. 北京北方华虹微系统有限公司
14. 北大青鸟集成电路有限公司
15. 北京宏思电子技术有限责任公司北京神州龙芯集成电路设计有限公司
16. 北京兆日科技有限责任公司
17. 北京海尔集成电路设计有限公司
18. 北京火马微电子技术有限公司
19. 北京奥贝克电子信息技术有限公司
20. 北京东世科技有限公司
21. 北京青鸟元芯微系统科技有限责任公司
22. 北京凝思科技有限公司
23. 北京时代华诺科技有限公司
24. 北京国芯安集成电路设计有限公司
25. 北京清华紫光微电子系统有限公司
26. 北京合众达电子技术公司
27. 北京润光泰力科技发展有限公司
28. 北京芯源东升集成电路技术开发有限公司
29. 威盛电子(中国)有限公司
30. 北京NEC集成电路设计有限公司
31. 北京中科模识科技有限公司
32. 北大青鸟环宇科技股份有限公司
33. 北京闻亭科技发展有限责任公司
34. 北京北阳电子技术有限公司
35. 奥华微电子(北京)有限公司
36. 矽统科技股份有限公司
37. 北京电子技术研究所芯片设计
38. 北京清华华环电子股份有限公司
39. 上海清华晶芯微电子有限公司北京研发中心
40. 北京中科微电子技术有限公司
41. 北京福星晓程电子科技股份有限公司
42. 北京革新科技有限公司
43. 北京中科联创科技有限公司
44. 北京科威傲微电子公司
45. 北京天宏绎集成电路科技发展有限公司
46. 北京博旭华达科技有限公司
47. 北京浩均科技有限公司
48. 北京航天伟盈微电子有限公司
49. 北京希格玛晶华微电子股份有限公司
50. 北京协同伟业信息技术有限公司
51. 北京微辰信息技术有限公司
52. 北京东科微电子有限公司
53. 北京凯赛德航天系统集成设计有限公司
54. 北京睿丽彩电子有限公司
55. 北京优顶电子科技有限公司
56. 北京赛特克电子技术公司
57. 科广新(北京)信息技术有限公司
58. 北京芯诺诚微电子技术有限责任公司
59. 北京宽广电信息技术发展有限公司
60. 北京中庆微数字设备开发有限公司
61. 北京明科世纪科技有限公司
62. 北京大学微处理器研究开发中心
63. 北京伊泰克电子有限公司
64. 北京旭普科技有限公司
65. 北京雷海电子技术有限公司
66. 北京飞行电子总公司微电子事业部
67. 北京弗赛尔电子设计有限公司
68. 中国科学院计算技术研究所
69. 北京机械工业自动化研究所
70. 国家专用集成电路设计工程技术研究中心
71. 北京数安科技有限公司
72. 北京地太探测器制造器有限公司
73. 北京明宇科技有限公司
74. 北京方正连宇通信公司
75. 北京首钢高新技术有限公司
76. 北京益泰电子集团有限责任公司
77. 北京华胜天成科技有限公司
78. 北京首科微电子工业研发中心有限公司
79. 北京联志创捷科技有限公司
80. 北京巨数数字技术开发有限公司
81. 北京清华同方凌讯科技有限公司
82. 北京英贝多嵌入式网络技术有限公司
83. 宝星新科技有限公司
84. 北京讯风光通信技术开发有限责任公司
85. 北京利亚德电子科技有限公司
86. 北京思旺电子技术有限公司
87. 研祥智能科技股份有限公司
88. 信息产业部电子第三研究所
89. 信息产业部电子第十五研究所
90. 北京中兴远景科技有限公司
91. 北京科技大学信息工程学院
92. 中国科学院自动化研究所
93. 首信集团(北京邮电通信设备厂)
94. 新思科技北京代表处
95. Cadence公司
96. 奥肯思(北京)科技有限公司
97. 北京艾可赛利微电技术有限公司
98. 中和华星科技有限公司
99. 优网通国际资讯(北京)有限公司
100.北京芯网拓科技有限公司
101.中国科学院EDA中心
102.首信集团首信研究院IP技术研究所
103.美国ANSOFT公司北京办事处
104.美国模拟器件(香港)有限公司北京代表处
105.IBM中国有限公司
106.***电子株式会社半导体部北京办事处
107.美信集成产品公司
108.摩托罗拉(中国)电子有限公司北京分公司
109.Microchip
110.意法半导体公司(北京办)
111.香港科汇(亚太)有限公司
112.飞利浦(中国)投资有限公司
113.LSI  Logic公司
114.AMD远东有限公司北京代表处
115.安那络器件(中国)有限公司
116.Sun Microsystems China Limited
117.美国德州仪器(中国)公司北京办事处
118.凌特公司北京办事处
119.安森美半导体
120.北京集成电路设计园有限责任公司
121.Cadence 中关村益华软件学院
122.北京硅普京南科技企业孵化器有限公司

广东地区
1.  深圳市力合微电子有限公司
2.  深圳市爱思科微电子有限公司
3.  深圳市长运通集成电路设计有限公司
4.  深圳芯邦微电子有限公司
5.  深圳市剑拓科技有限公司
6.  深圳市方通科技有限公司
7.  深圳市明华澳汉科技股份有限公司
8.  深圳方禾集成电路有限公司
9.  深圳市昊天旭辉科技有限公司
10. 深圳市矽谷电子系统有限公司
11. 深圳市中密科技有限公司
12. 深圳市世纪经纬数据系统有限公司
13. 深圳市鹏思电子有限公司
14. 深圳市国芯微电子有限公司
15. 深圳深爱半导体有限公司
16. 深圳市国微技术有限公司
17. 深圳市明微电子有限公司
18. 赛美科微电子(深圳)有限公司
19. 深圳市国微电子股份有限公司
20. 深圳艾科创新微电子有限公司
21. 深圳市先功集成电路有限公司
22. 深圳市中兴集成电路设计有限责任公司
23. 深圳市互动宝科技开发有限公司
24. 深圳市中微半导体有限公司
25. 深圳市安健科技有限公司
26. 美芯集成电路(深圳)有限公司
27. 深圳市兴域电子有限公司
28. 深圳兰光电子集团有限公司
29. 深圳安凯微电子技术有限公司
30. 深圳凯达网络技术有限公司
31. 创系电子科技(深圳)有限公司
32. 深圳市名声电子科技开发
33. 深圳市日松微电子有限公司
34. 深圳市惠而特科技有限公司
35. 深圳市天微电子有限公司
36. 晶门科技(深圳)有限公司
37. 深圳源核微电子技术有限公司
38. 深圳华超软件与微电子设计有限公司
39. 深圳市贝顿科技有限公司
40. 泰格阳技术(深圳)有限公司
41. 深圳市海顺半导体电子有限公司
42. 深圳市新达微电子有限公司
43. 晶晶佳电子(深圳)有限公司
44. 深圳市郎科科技有限公司
45. 香港日电电子公司深圳代表处
46. 深圳市爱默贝尔科技有限公司
47. 力群科技股份有限公司
48. 网泰信息技术有限公司
49. 深圳市约乐电子有限公司
50. 深圳市特安电装科技有限公司
51. 深圳华润矽科微电子有限公司
52. 深圳赛格高技术投资股份有限公司
53. 广州华芯集成电路有限公司
54. 深圳市远望谷信息技术有限公司
55. 深圳市冠日通讯科技有限公司
56. ASEC(亚矽科技)
57. 广州集成电路设计中心
58. 科广电子(珠海)有限公司
59. 珠海新经济资源开发港有限责任公司
60. 珠海炬力集成电路设计有限公司


江苏地区
1.  无锡仪晶电子有限公司
2.  无锡力芯微电子有限公司
3.  无锡致合微电子有限公司
4.  先迪微电子有限公司
5.  亿晶科技(苏州)有限公司
6.  无锡硅科动力技术有限公司
7.  华阳微电子有限公司
8.  世宏科技(苏州)有限公司
9.  瑞晟微电子(苏州)有限公司
10. 苏州国微工大微电子有限公司
11. 无锡华方微电子有限公司
12. 无锡爱芯科微电子有限公司
13. 无锡市友旺电子有限公司
14. 江苏意源微电子技术有限公司
15. 中国电子科技集团第58研究所
16. 无锡市新区通用微电子有限公司
17. 常州明日科技发展有限公司
18. 无锡日松微电子有限公司
19. 无锡盈泰科技有限公司
20. 无锡超钰微电子有限公司
21. 中国电子科技集团公司第五十五研究所
22. 咏传科技(苏州)有限公司
23. 无锡市海成集成电路设计中心
24. 苏州市华芯微电子有限公司
25. NTOOL(南京)有限公司
26. 苏州国芯科技有限公司
27. 摩托罗拉苏州设计中心
28. 南京微盟电子有限公司
29. 江苏省专用集成电路设计重点实验室
30. 苏州中科集成电路设计中心
31. 金科集成电路(苏州)有限公司
32. 开源集成电路(苏州)有限公司


陕西地区
1.  德国英飞凌(西安)科技有限公司
2.  美欧电信技术有限公司
3.  西安电子科技大学
4.  中国航天工业总公司七七一研究所
5.  西安万思集成电路有限公司
6.  西安和记奥普泰通信技术有限公司
7.  西北工业大学航空微电子中心
8.  西安科大华成电子股份有限公司
9.  西安北斗星数码信息有限公司
10. 西安华西集成电路设计中心
11. 西安高华电气实业有限公司
12. 国家集成电路设计西安产业化基地
13. 西安亚同集成电路技术有限公司
14. 西安深亚电子有限公司
15. 西安联圣科技有限公司
16. 西安启圣科技有限责任公司
17. 西安西电捷通无线网络通信有限公司
18. 西安华泰集成电路设计中心
19. 富微科技(西安)有限公司
20. 西安德智科技有限公司
21. 西安德恒科技有限公司
22. 西安开元微电子科技股份有限公司
23. 陕西航天意德高科技产业有限公司
24. 西安蓝启科技有限责任公司
25. 西安秦芯科技有限责任公司
26. 西安大唐电信有限公司IC设计部
27. 西安交大数码技术有限责任公司
28. 西安集成电路产业发展中心
29. 西安中芯微电子技术有限公司


四川地区
1.  国家集成电路设计成都产业化基地
2.  成都威斯达芯片有限责任公司
3.  成都华微电子有限公司
4.  成都国腾微电子有限公司
5.  成都华威电子有限公司
6.  四川汇源科技发展股份有限公司数字技术研究院
7.  重庆西南集成电路设计有限公司
8.  中国电子科技集团第24研究所
9.  四川仪表六厂
10. 成都天锐微电子有限公司
11. 四川绵阳虹远芯片设计公司
12. 绵阳凯路微电子有限公司
13. 重庆西南集成电路设计有限责任公司
14. 四川南山之桥微电子有限公司
15. 成都华微电子系统有限公司


浙江地区
1.  杭州中天微系统有限公司
2.  士康(杭州)射频技术有限公司
3.  绍兴芯谷科技有限公司
4.  宁波安泰集成电路设计有限公司
5.  宁波市科技园区甬晶微电子有限公司
6.  浙江华矽微电子科技有限公司
7.  浙江京昌电子股份有限公司
8.  宁波华龙电子有限公司
9.  杭州士兰微电子股份有限公司
10. 浙江朗威系统有限公司
11. 杭州友旺电子有限公司
12. 杭州国芯科技有限公司
13. 杭州东方微电子开发联合中心
14. 浙江省大规模IC设计重点实验室
15. 浙江大学微电子技术与系统设计研究所

其它地区
1.  摩托罗拉(强芯)天津集成电路设计有限公司
2.  丹东安顺微电子有限公司
3.  天津强芯半导体芯片设计有限公司
4.  凹凸电子(武汉)有限公司
5.  亚芯微电子有限公司
6.  成才华微电子系统有限公司
7.  环群科技股份有限公司
8.  长沙韶光微电子有限公司
9.  武汉吴昱微电子有限公司
10. 合肥工大先行微电子技术有限公司
11. 创意电子股份有限公司
12. 哈工大微电子中心
13. 英图微电子(合肥)有限公司
14. 华北集成电路设计有限公司
15. 河南安阳市新世纪电子研究所
16. 安徽四创电子股份有限公司
17. 哈尔滨工业大学微电子中心
18. 哈尔滨海格科技发展有限责任公司
19. 合肥工业大学理学院
20. 华北集成电路设计有限公司
21. 英图微电子(合肥)有限公司
22. 山东神思电子系统有限公司
23. 山东浪湖集团ASIC设计中心
24. 厦门联创微电子股份有限公司
25. 烽火通信科技股份有限公司
26. 丹东华奥电子有限公司
27. Chip Idea Microelectronics. S. A


阅读全文(1039) | 评论:0 | 复制链接

硬件工程师面试试题(2006-12-24 15:47:00)

硬件工程师面试试题
 

模拟电路  
1、基尔霍夫定理的内容是什么?(仕兰微电子)  
2、平板电容公式(C=εS/4πkd)。(未知)  
3、最基本的如三极管曲线特性。(未知)  
4、描述反馈电路的概念,列举他们的应用。(仕兰微电子)  
5、负反馈种类(电压并联反馈,电流串联反馈,电压串联反馈和电流并联反馈);负反 馈的优点(降低放大器的增益灵敏度,改变输入电阻和输出电阻,改善放大器的线性和非 线性失真,有效地扩展放大器的通频带,自动调节作用)(未知)  
6、放大电路的频率补偿的目的是什么,有哪些方法?(仕兰微电子)  
7、频率响应,如:怎么才算是稳定的,如何改变频响曲线的几个方法。(未知)  
8、给出一个查分运放,如何相位补偿,并画补偿后的波特图。(凹凸)  
9、基本放大电路种类(电压放大器,电流放大器,互导放大器和互阻放大器),优缺 点,特别是广泛采用差分结构的原因。(未知)  
10、给出一差分电路,告诉其输出电压Y+和Y-,求共模分量和差模分量。(未知)  
11、画差放的两个输入管。(凹凸)  
12、画出由运放构成加法、减法、微分、积分运算的电路原理图。并画出一个晶体管级的 运放电路。(仕兰微电子)  
13、用运算放大器组成一个10倍的放大器。(未知)  
14、给出一个简单电路,让你分析输出电压的特性(就是个积分电路),并求输出端某点 的  rise/fall时间。(Infineon笔试试题)  
15、电阻R和电容C串联,输入电压为R和C之间的电压,输出电压分别为C上电压和R上电 压,要求制这两种电路输入电压的频谱,判断这两种电路何为高通滤波器,何为低通滤 波器。当RC<<T时,给出输入电压波形图,绘制两种电路的输出波形图。(未知)  
16、有源滤波器和无源滤波器的原理及区别?(新太硬件)  
17、有一时域信号S=V0sin(2pif0t)+V1cos(2pif1t)+V2sin(2pif3t+90),当其通过低通、 带通、高通滤波器后的信号表示方式。(未知)  
18、选择电阻时要考虑什么?(东信笔试题)  
19、在CMOS电路中,要有一个单管作为开关管精确传递模拟低电平,这个单管你会用P管 还是N管,为什么?(仕兰微电子)  
20、给出多个mos管组成的电路求5个点的电压。(Infineon笔试试题)  
21、电压源、电流源是集成电路中经常用到的模块,请画出你知道的线路结构,简单描述 其优缺点。(仕兰微电子)  
22、画电流偏置的产生电路,并解释。(凹凸)  
23、史密斯特电路,求回差电压。(华为面试题)  
24、晶体振荡器,好像是给出振荡频率让你求周期(应该是单片机的,12分之一周期....)  (华为面试题)  
25、LC正弦波振荡器有哪几种三点式振荡电路,分别画出其原理图。(仕兰微电子)  
26、VCO是什么,什么参数(压控振荡器?) (华为面试题)  
27、锁相环有哪几部分组成?(仕兰微电子)  
28、锁相环电路组成,振荡器(比如用D触发器如何搭)。(未知)  
29、求锁相环的输出频率,给了一个锁相环的结构图。(未知)  
30、如果公司做高频电子的,可能还要RF知识,调频,鉴频鉴相之类,不一一列举。(未知)  
31、一电源和一段传输线相连(长度为L,传输时间为T),画出终端处波形,考虑传输线 无损耗。给出电源电压波形图,要求绘制终端波形图。(未知)  
32、微波电路的匹配电阻。(未知)  
33、DAC和ADC的实现各有哪些方法?(仕兰微电子)  
34、A/D电路组成、工作原理。(未知)  
35、实际工作所需要的一些技术知识(面试容易问到)。如电路的低功耗,稳定,高速如何做到,调运放,布版图注意的地方等等,一般会针对简历上你所写做过的东西具体问,肯定会问得很细(所以别把什么都写上,精通之类的词也别用太多了),这个东西各个人就 不一样了,不好说什么了。(未知)  

_______________________________________________________________________  
                      数字电路  
1、同步电路和异步电路的区别是什么?(仕兰微电子)  
2、什么是同步逻辑和异步逻辑?(汉王笔试)  
同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系。  
3、什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?(汉王笔试)  
线与逻辑是两个输出信号相连可以实现与的功能。在硬件上,要用oc门来实现,由于不用 oc门可能使灌电流过大,而烧坏逻辑门。 同时在输出端口应加一个上拉电阻。  
4、什么是Setup 和Holdup时间?(汉王笔试)  
5、setup和holdup时间,区别.(南山之桥)  
6、解释setup time和hold time的定义和在时钟信号延迟时的变化。(未知)  
7、解释setup和hold time violation,画图说明,并说明解决办法。(威盛VIA   
2003.11.06 上海笔试试题)  
Setup/hold time 是测试芯片对输入信号和时钟信号之间的时间要求。建立时间是指触发 器的时钟信号上升沿到来以前,数据稳定不变的时间。输入信号应提前时钟上升沿(如上升沿有效)T时间到达芯片,这个T就是建立时间-Setup time.如不满足setup time,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器。 保持时间是指触发器的时钟信号上升沿到来以后,数据稳定不变的时间。如果hold time 不够,数据同样不能被打入触发器。  
建立时间(Setup Time)和保持时间(Hold time)。建立时间是指在时钟边沿前,数据信 号需要保持不变的时间。保持时间是指时钟跳变边沿后数据信号需要保持不变的时间。如果不满足建立和保持时间的话,那么DFF将不能正确地采样到数据,将会出现 metastability的情况。如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时 间,那么超过量就分别被称为建立时间裕量和保持时间裕量。  
8、说说对数字逻辑中的竞争和冒险的理解,并举例说明竞争和冒险怎样消除。(仕兰微 电子)  
9、什么是竞争与冒险现象?怎样判断?如何消除?(汉王笔试)  
在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。产生毛刺叫冒险。如果布尔式中有相反的信号则可能产生竞争和冒险现象。解决方法:一是添加布尔式的消去项,二是在芯片外部加电容。  
10、你知道那些常用逻辑电平?TTL与COMS电平可以直接互连吗?(汉王笔试)  
常用逻辑电平:12V,5V,3.3V;TTL和CMOS不可以直接互连,由于TTL是在0.3-3.6V之间,而CMOS则是有在12V的有在5V的。CMOS输出接到TTL是可以直接互连。TTL接到CMOS需要在输出端口加一上拉电阻接到5V或者12V。  
11、如何解决亚稳态。(飞利浦-大唐笔试)  
亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚  
稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平  
上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无  
用的输出电平可以沿信号通道上的各个触发器级联式传播下去。  
12、IC设计中同步复位与 异步复位的区别。(南山之桥)  
13、MOORE 与 MEELEY状态机的特征。(南山之桥)  
14、多时域设计中,如何处理信号跨时域。(南山之桥)  
15、给了reg的setup,hold时间,求中间组合逻辑的delay范围。(飞利浦-大唐笔试)  
Delay < period - setup – hold  
16、时钟周期为T,触发器D1的建立时间最大为T1max,最小为T1min。组合逻辑电路最大延  
迟为T2max,最小为T2min。问,触发器D2的建立时间T3和保持时间应满足什么条件。(华  
为)  
17、给出某个一般时序电路的图,有Tsetup,Tdelay,Tck->q,还有 clock的delay,写出决  
定最大时钟的因素,同时给出表达式。(威盛VIA 2003.11.06 上海笔试试题)  
18、说说静态、动态时序模拟的优缺点。(威盛VIA 2003.11.06 上海笔试试题)  
19、一个四级的Mux,其中第二级信号为关键信号 如何改善timing。(威盛VIA   
2003.11.06 上海笔试试题)  
20、给出一个门级的图,又给了各个门的传输延时,问关键路径是什么,还问给出输入,  
使得输出依赖于关键路径。(未知)  
21、逻辑方面数字电路的卡诺图化简,时序(同步异步差异),触发器有几种(区别,优  
点),全加器等等。(未知)  
22、卡诺图写出逻辑表达使。(威盛VIA 2003.11.06 上海笔试试题)  
23、化简F(A,B,C,D)= m(1,3,4,5,10,11,12,13,14,15)的和。(威盛)  
24、please show the CMOS inverter schmatic,layout and its cross sectionwith P-  
well process.Plot its transfer curve (Vout-Vin) And also explain the   
operation region of PMOS and NMOS for each segment of the transfer curve? (威  
盛笔试题circuit design-beijing-03.11.09)  
25、To design a CMOS invertor with balance rise and fall time,please define   
the ration of channel width of PMOS and NMOS and explain?  
26、为什么一个标准的倒相器中P管的宽长比要比N管的宽长比大?(仕兰微电子)  
27、用mos管搭出一个二输入与非门。(扬智电子笔试)  
28、please draw the transistor level schematic of a cmos 2 input AND gate and   
explain which input has faster response for output rising edge.(less delay   
time)。(威盛笔试题circuit design-beijing-03.11.09)  
29、画出NOT,NAND,NOR的符号,真值表,还有transistor level的电路。(Infineon笔  
试)   
30、画出CMOS的图,画出tow-to-one mux gate。(威盛VIA 2003.11.06 上海笔试试题)  
31、用一个二选一mux和一个inv实现异或。(飞利浦-大唐笔试)  
32、画出Y=A*B+C的cmos电路图。(科广试题)  
33、用逻辑们和cmos电路实现ab+cd。(飞利浦-大唐笔试)  
34、画出CMOS电路的晶体管级电路图,实现Y=A*B+C(D+E)。(仕兰微电子)  
35、利用4选1实现F(x,y,z)=xz+yz’。(未知)  
36、给一个表达式f=xxxx+xxxx+xxxxx+xxxx用最少数量的与非门实现(实际上就是化  
简)。  
37、给出一个简单的由多个NOT,NAND,NOR组成的原理图,根据输入波形画出各点波形。  
(Infineon笔试)  
38、为了实现逻辑(A XOR B)OR (C AND D),请选用以下逻辑中的一种,并说明为什  
么?1)INV   2)AND   3)OR   4)NAND   5)NOR   6)XOR  答案:NAND(未知)  
39、用与非门等设计全加法器。(华为)  
40、给出两个门电路让你分析异同。(华为)  
41、用简单电路实现,当A为输入时,输出B波形为…(仕兰微电子)  
42、A,B,C,D,E进行投票,多数服从少数,输出是F(也就是如果A,B,C,D,E中1的个数比0  
多,那么F输出为1,否则F为0),用与非门实现,输入数目没有限制。(未知)  
43、用波形表示D触发器的功能。(扬智电子笔试)  
44、用传输门和倒向器搭一个边沿触发器。(扬智电子笔试)  
45、用逻辑们画出D触发器。(威盛VIA 2003.11.06 上海笔试试题)  
46、画出DFF的结构图,用verilog实现之。(威盛)  
47、画出一种CMOS的D锁存器的电路图和版图。(未知)  
48、D触发器和D锁存器的区别。(新太硬件面试)  
49、简述latch和filp-flop的异同。(未知)  
50、LATCH和DFF的概念和区别。(未知)  
51、latch与register的区别,为什么现在多用register.行为级描述中latch如何产生的。  
(南山之桥)  
52、用D触发器做个二分颦的电路.又问什么是状态图。(华为)  
53、请画出用D触发器实现2倍分频的逻辑电路?(汉王笔试)  
54、怎样用D触发器、与或非门组成二分频电路?(东信笔试)  
55、How many flip-flop circuits are needed to divide by 16?  (Intel) 16分频?  
56、用filp-flop和logic-gate设计一个1位加法器,输入carryin和current-stage,输出  
carryout和next-stage. (未知)  
57、用D触发器做个4进制的计数。(华为)  
58、实现N位Johnson Counter,N=5。(南山之桥)  
59、用你熟悉的设计方式设计一个可预置初值的7进制循环计数器,15进制的呢?(仕兰  
微电子)  
60、数字电路设计当然必问Verilog/VHDL,如设计计数器。(未知)  
61、BLOCKING NONBLOCKING 赋值的区别。(南山之桥)  
62、写异步D触发器的verilog module。(扬智电子笔试)  
module dff8(clk , reset, d, q);  
input        clk;  
input        reset;  
input  [7:0] d;  
output [7:0] q;  
reg   [7:0] q;  
always @ (posedge clk or posedge reset)  
   if(reset)  
     q <= 0;  
   else  
     q <= d;  
endmodule  
63、用D触发器实现2倍分频的Verilog描述? (汉王笔试)  
module divide2( clk , clk_o, reset);  
   input     clk , reset;  
   output   clk_o;  
   wire in;   
reg out ;  
   always @ ( posedge clk or posedge reset)  
     if ( reset)  
       out <= 0;  
         else  
           out <= in;  
       assign in = ~out;  
       assign clk_o = out;  
     endmodule  
64、可编程逻辑器件在现代电子设计中越来越重要,请问:a) 你所知道的可编程逻辑器  
件有哪些? b) 试用VHDL或VERILOG、ABLE描述8位D触发器逻辑。(汉王笔试)  
PAL,PLD,CPLD,FPGA。  
module dff8(clk , reset, d, q);  
input        clk;  
input        reset;  
input   d;  
output  q;  
reg q;  
always @ (posedge clk or posedge reset)  
   if(reset)  
     q <= 0;  
   else  
     q <= d;  
endmodule  
65、请用HDL描述四位的全加法器、5分频电路。(仕兰微电子)  
66、用VERILOG或VHDL写一段代码,实现10进制计数器。(未知)  
67、用VERILOG或VHDL写一段代码,实现消除一个glitch。(未知)  
68、一个状态机的题目用verilog实现(不过这个状态机画的实在比较差,很容易误解  
的)。(威盛VIA 2003.11.06 上海笔试试题)  
69、描述一个交通信号灯的设计。(仕兰微电子)  
70、画状态机,接受1,2,5分钱的卖报机,每份报纸5分钱。(扬智电子笔试)  
71、设计一个自动售货机系统,卖soda水的,只能投进三种硬币,要正确的找回钱  
数。       (1)画出fsm(有限状态机);(2)用verilog编程,语法要符合fpga设计  
的要求。(未知)  
72、设计一个自动饮料售卖机,饮料10分钱,硬币有5分和10分两种,并考虑找零:(1)  
画出fsm(有限状态机);(2)用verilog编程,语法要符合fpga设计的要求;(3)设计  
工程中可使用的工具及设计大致过程。(未知)  
73、画出可以检测10010串的状态图,并verilog实现之。(威盛)  
74、用FSM实现101101的序列检测模块。(南山之桥)  
a为输入端,b为输出端,如果a连续输入为1101则b输出为1,否则为0。  
例如a: 0001100110110100100110  
       b: 0000000000100100000000  
    请画出state machine;请用RTL描述其state machine。(未知)  
75、用verilog/vddl检测stream中的特定字符串(分状态用状态机写)。(飞利浦-大唐  
笔试)  
76、用verilog/vhdl写一个fifo控制器(包括空,满,半满信号)。(飞利浦-大唐笔试)  
77、现有一用户需要一种集成电路产品,要求该产品能够实现如下功能:y=lnx,其中,x  
为4位二进制整数输入信号。y为二进制小数输出,要求保留两位小数。电源电压为3~5v假  
设公司接到该项目后,交由你来负责该产品的设计,试讨论该产品的设计全程。(仕兰微  
电子)  
78、sram,falsh memory,及dram的区别?(新太硬件面试)  
79、给出单管DRAM的原理图(西电版《数字电子技术基础》作者杨颂华、冯毛官205页图9  
-14b),问你有什么办法提高refresh time,总共有5个问题,记不起来了。(降低温  
度,增大电容存储容量)(Infineon笔试)  
80、Please draw schematic of a common SRAM cell with 6 transistors,point out   
which nodes can store data and which node is word line control? (威盛笔试题  
circuit design-beijing-03.11.09)  
81、名词:sram,ssram,sdram  
名词IRQ,BIOS,USB,VHDL,SDR  
IRQ:   Interrupt ReQuest  
BIOS:  Basic Input Output System  
USB:  Universal Serial Bus  
VHDL: VHIC Hardware Description Language  
SDR:  Single Data Rate  
  压控振荡器的英文缩写(VCO)。  
  动态随机存储器的英文缩写(DRAM)。  
名词解释,无聊的外文缩写罢了,比如PCI、ECC、DDR、interrupt、pipeline、  
IRQ,BIOS,USB,VHDL,VLSI VCO(压控振荡器) RAM (动态随机存储器),FIR IIR DFT(离散  
傅立叶变换)或者是中文的,比如:a.量化误差  b.直方图  c.白平衡   

____________________________________________________________________________  
                        IC设计基础(流程、工艺、版图、器件)  
1、我们公司的产品是集成电路,请描述一下你对集成电路的认识,列举一些与集成电路  
相关的内容(如讲清楚模拟、数字、双极型、CMOS、MCU、RISC、CISC、DSP、ASIC、FPGA  
等的概念)。(仕兰微面试题目)  
2、FPGA和ASIC的概念,他们的区别。(未知)  
答案:FPGA是可编程ASIC。  
ASIC:专用集成电路,它是面向专门用途的电路,专门为一个用户设计和制造的。根据一  
个用户的特定要求,能以低研制成本,短、交货周期供货的全定制,半定制集成电路。与  
门阵列等其它ASIC(Application Specific IC)相比,它们又具有设计开发周期短、设计  
制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点  
3、什么叫做OTP片、掩膜片,两者的区别何在?(仕兰微面试题目)  
4、你知道的集成电路设计的表达方式有哪几种?(仕兰微面试题目)  
5、描述你对集成电路设计流程的认识。(仕兰微面试题目)  
6、简述FPGA等可编程逻辑器件设计流程。(仕兰微面试题目)  
7、IC设计前端到后端的流程和eda工具。(未知)  
8、从RTL synthesis到tape out之间的设计flow,并列出其中各步使用的tool.(未知)  
9、Asic的design flow。(威盛VIA 2003.11.06 上海笔试试题)  
10、写出asic前期设计的流程和相应的工具。(威盛)  
11、集成电路前段设计流程,写出相关的工具。(扬智电子笔试)  
先介绍下IC开发流程:  
1.)代码输入(design input)  
用vhdl或者是verilog语言来完成器件的功能描述,生成hdl代码  
语言输入工具:SUMMIT   VISUALHDL  
            MENTOR   RENIOR  
图形输入:    composer(cadence);   
            viewlogic (viewdraw)  
2.)电路仿真(circuit simulation)  
将vhd代码进行先前逻辑仿真,验证功能描述是否正确  
数字电路仿真工具:  
    Verolog:  CADENCE     Verolig-XL  
               SYNOPSYS    VCS  
               MENTOR      Modle-sim  
     VHDL :    CADENCE     NC-vhdl  
               SYNOPSYS    VSS  
               MENTOR      Modle-sim  
模拟电路仿真工具:  
               ***ANTI HSpice pspice,spectre micro microwave:    eesoft : hp  
3.)逻辑综合(synthesis tools)  
逻辑综合工具可以将设计思想vhd代码转化成对应一定工艺手段的门级电路;将初级仿真 中所没有考虑的门沿(gates delay)反标到生成的门级网表中,返回电路仿真阶段进行再 仿真。最终仿真结果生成的网表称为物理网表。  
12、请简述一下设计后端的整个流程?(仕兰微面试题目)  
13、是否接触过自动布局布线?请说出一两种工具软件。自动布局布线需要哪些基本元 素?(仕兰微面试题目)  
14、描述你对集成电路工艺的认识。(仕兰微面试题目)  
15、列举几种集成电路典型工艺。工艺上常提到0.25,0.18指的是什么?(仕兰微面试题 目)  
16、请描述一下国内的工艺现状。(仕兰微面试题目)  
17、半导体工艺中,掺杂有哪几种方式?(仕兰微面试题目)  
18、描述CMOS电路中闩锁效应产生的过程及最后的结果?(仕兰微面试题目)  
19、解释latch-up现象和Antenna effect和其预防措施.(未知)  
20、什么叫Latchup?(科广试题)  
21、什么叫窄沟效应? (科广试题)  
22、什么是NMOS、PMOS、CMOS?什么是增强型、耗尽型?什么是PNP、NPN?他们有什么差  
别?(仕兰微面试题目)  
23、硅栅COMS工艺中N阱中做的是P管还是N管,N阱的阱电位的连接有什么要求?(仕兰微  
面试题目)  
24、画出CMOS晶体管的CROSS-OVER图(应该是纵剖面图),给出所有可能的传输特性和转  
移特性。(Infineon笔试试题)  
25、以interver为例,写出N阱CMOS的process流程,并画出剖面图。(科广试题)  
26、Please explain how we describe the resistance in semiconductor. Compare   
the resistance of a metal,poly and diffusion in tranditional CMOS process.(威  
盛笔试题circuit design-beijing-03.11.09)  
27、说明mos一半工作在什么区。(凹凸的题目和面试)  
28、画p-bulk 的nmos截面图。(凹凸的题目和面试)  
29、写schematic note(?), 越多越好。(凹凸的题目和面试)  
30、寄生效应在ic设计中怎样加以克服和利用。(未知)  
31、太底层的MOS管物理特***觉一般不大会作为笔试面试题,因为全是微电子物理,公  
式推导太罗索,除非面试出题的是个老学究。IC设计的话需要熟悉的软件: Cadence,   
Synopsys, Avant,UNIX当然也要大概会操作。  
32、unix 命令cp -r, rm,uname。(扬智电子笔试)  

___________________________________________________________________________  
                          单片机、MCU、计算机原理  
1、简单描述一个单片机系统的主要组成模块,并说明各模块之间的数据流流向和控制流  
流向。简述单片机应用系统的设计原则。(仕兰微面试题目)  
2、画出8031与2716(2K*8ROM)的连线图,要求采用三-八译码器,8031的P2.5,P2.4和  
P2.3参加译码,基本地址范围为3000H-3FFFH。该2716有没有重叠地址?根据是什么?若  
有,则写出每片2716的重叠地址范围。(仕兰微面试题目)  
3、用8051设计一个带一个8*16键盘加驱动八个数码管(共阳)的原理图。(仕兰微面试  
题目)  
4、PCI总线的含义是什么?PCI总线的主要特点是什么? (仕兰微面试题目)  
5、中断的概念?简述中断的过程。(仕兰微面试题目)  
6、如单片机中断几个/类型,编中断程序注意什么问题;(未知)  
7、要用一个开环脉冲调速系统来控制直流电动机的转速,程序由8051完成。简单原理如  
下:由P3.4输出脉冲的占空比来控制转速,占空比越大,转速越快;而占空比由K7-K0八  
个开关来设置,直接与P1口相连(开关拨到下方时为"0",拨到上方时为"1",组成一个八  
位二进制数N),要求占空比为N/256。  (仕兰微面试题目)  
 下面程序用计数法来实现这一功能,请将空余部分添完整。    
 MOV P1,#0FFH    
 LOOP1 :MOV R4,#0FFH    
 --------    
 MOV R3,#00H    
 LOOP2 :MOV A,P1    
 --------    
 SUBB A,R3    
 JNZ SKP1    
 --------    
 SKP1:MOV C,70H    
 MOV P3.4,C    
 ACALL DELAY :此延时子程序略    
 --------    
 --------    
 AJMP LOOP1    
8、单片机上电后没有运转,首先要检查什么?(东信笔试题)  
9、What is PC Chipset? (扬智电子笔试)  
芯片组(Chipset)是主板的核心组成部分,按照在主板上的排列位置的不同,通常分为  
北桥芯片和南桥芯片。北桥芯片提供对CPU的类型和主频、内存的类型和最大容量、  
ISA/PCI/AGP插槽、ECC纠错等支持。南桥芯片则提供对KBC(键盘控制器)、RTC(实时时  
钟控制器)、USB(通用串行总线)、Ultra DMA/33(66)EIDE数据传输方式和ACPI(高级  
能源管理)等的支持。其中北桥芯片起着主导性的作用,也称为主桥(Host Bridge)。  
  除了最通用的南北桥结构外,目前芯片组正向更高级的加速集线架构发展,Intel的  
8xx系列芯片组就是这类芯片组的代表,它将一些子系统如IDE接口、音效、MODEM和USB直  
接接入主芯片,能够提供比PCI总线宽一倍的带宽,达到了266MB/s。  
   10、如果简历上还说做过cpu之类,就会问到诸如cpu如何工作,流水线之类的问题。  
(未知)  
11、计算机的基本组成部分及其各自的作用。(东信笔试题)  
12、请画出微机接口电路中,典型的输入设备与微机接口逻辑示意图(数据接口、控制接  
口、所存器/缓冲器)。 (汉王笔试)  
13、cache的主要部分什么的。(威盛VIA 2003.11.06 上海笔试试题)  
14、同步异步传输的差异(未知)  
15、串行通信与同步通信异同,特点,比较。(华为面试题)  
16、RS232c高电平脉冲对应的TTL逻辑是?(负逻辑?) (华为面试题)  

___________________________________________________________________________  
                                     信号与系统  
1、的话音频率一般为300~3400HZ,若对其采样且使信号不失真,其最小的采样频率应为  
多大?若采用8KHZ的采样频率,并采用8bit的PCM编码,则存储一秒钟的信号数据量有多  
大?(仕兰微面试题目)  
2、什么耐奎斯特定律,怎么由模拟信号转为数字信号。(华为面试题)  
3、如果模拟信号的带宽为 5khz,要用8K的采样率,怎么办? (lucent) 两路?  
4、信号与系统:在时域与频域关系。(华为面试题)  
5、给出时域信号,求其直流分量。(未知)  
6、给出一时域信号,要求(1)写出频率分量,(2)写出其傅立叶变换级数;(3)当波  
形经过低通滤波器滤掉高次谐波而只保留一次谐波时,画出滤波后的输出波形。(未知)  
7、sketch 连续正弦信号和连续矩形波(都有图)的傅立叶变换 。(Infineon笔试试题)  
8、拉氏变换和傅立叶变换的表达式及联系。(新太硬件面题)  

_________________________________________________________________________  
                               DSP、嵌入式、软件等  
1、请用方框图描述一个你熟悉的实用数字信号处理系统,并做简要的分析;如果没有,  
也可以自己设计一个简单的数字信号处理系统,并描述其功能及用途。(仕兰微面试题  
目)  
2、数字滤波器的分类和结构特点。(仕兰微面试题目)  
3、IIR,FIR滤波器的异同。(新太硬件面题)  
4、拉氏变换与Z变换公式等类似东西,随便翻翻书把如.h(n)=-a*h(n-1)+b*δ(n)  a.求h  
(n)的z变换;b.问该系统是否为稳定系统;c.写出FIR数字滤波器的差分方程;(未知)  
5、DSP和通用处理器在结构上有什么不同,请简要画出你熟悉的一种DSP结构图。(信威  
dsp软件面试题)  
6、说说定点DSP和浮点DSP的定义(或者说出他们的区别)(信威dsp软件面试题)  
7、说说你对循环寻址和位反序寻址的理解.(信威dsp软件面试题)  
8、请写出【-8,7】的二进制补码,和二进制偏置码。用Q15表示出0.5和-0.5.(信威  
dsp软件面试题)  
9、DSP的结构(哈佛结构);(未知)  
10、嵌入式处理器类型(如ARM),操作系统种类(Vxworks,ucos,winCE,linux),操作系  
统方面偏CS方向了,在CS篇里面讲了;(未知)  
11、有一个LDO芯片将用于对手机供电,需要你对他进行评估,你将如何设计你的测试项  
目?  
12、某程序在一个嵌入式系统(200M CPU,50M SDRAM)中已经最优化了,换到零一个系  
统(300M CPU,50M SDRAM)中是否还需要优化? (Intel)   
13、请简要描述HUFFMAN编码的基本原理及其基本的实现方法。(仕兰微面试题目)  
14、说出OSI七层网络协议中的四层(任意四层)。(仕兰微面试题目)  
15、A)  (仕兰微面试题目)  
#i nclude    
void testf(int*p)    
{    
*p+=1;    
}    
main()    
{    
int *n,m[2];    
n=m;    
m[0]=1;    
m[1]=8;    
testf(n);    
printf("Data value is %d ",*n);    
}    
------------------------------    
B)    
#i nclude    
void testf(int**p)    
{    
*p+=1;    
}    
main()    
{int *n,m[2];    
n=m;    
m[0]=1;    
m[1]=8;    
testf(&n);    
printf(Data value is %d",*n);    
}    
下面的结果是程序A还是程序B的?    
Data value is 8    
那么另一段程序的结果是什么?    
16、那种排序方法最快? (华为面试题)  
17、写出两个排序算法,问哪个好?(威盛)  
18、编一个简单的求n!的程序 。(Infineon笔试试题)  
19、用一种编程语言写n!的算法。(威盛VIA 2003.11.06 上海笔试试题)  
20、用C语言写一个递归算法求N!;(华为面试题)   
21、给一个C的函数,关于字符串和数组,找出错误;(华为面试题)   
22、防火墙是怎么实现的? (华为面试题)  
23、你对哪方面编程熟悉?(华为面试题)  
24、冒泡排序的原理。(新太硬件面题)  
25、操作系统的功能。(新太硬件面题)  
26、学过的计算机语言及开发的系统。(新太硬件面题)  
27、一个农夫发现围成正方形的围栏比长方形的节省4个木桩但是面积一样.羊的数目和正 方形围栏的桩子的个数一样但是小于36,问有多少羊?(威盛)  
28、C语言实现统计某个cell在某.v文件调用的次数(这个题目真bt) (威盛VIA   
2003.11.06 上海笔试试题)  
29、用C语言写一段控制手机中马达振子的驱动程序。(威胜)  
30、用perl或TCL/Tk实现一段字符串识别和比较的程序。(未知)  
31、给出一个堆栈的结构,求中断后显示结果,主要是考堆栈压入返回地址存放在低端地 址还是高端。(未知)  
32、一些DOS命令,如显示文件,拷贝,删除。(未知)  
33、设计一个类,使得该类任何形式的派生类无论怎么定义和实现,都无法产生任何对象 实例。(IBM)  
34、What is pre-emption? (Intel)  
35、What is the state of a process if a resource is not available? (Intel)  
36、三个 float a,b,c;问值(a+b)+c==(b+a)+c, (a+b)+c==(a+c)+b。(Intel)    
37、把一个链表反向填空。  (lucent)  
38、x^4+a*x^3+x^2+c*x+d 最少需要做几次乘法? (Dephi)  

____________________________________________________________________________  
                                  主观题  
1、你认为你从事研发工作有哪些特点?(仕兰微面试题目)  
2、说出你的最大弱点及改进方法。(威盛VIA 2003.11.06 上海笔试试题)  
3、说出你的理想。说出你想达到的目标。 题目是英文出的,要用英文回答。(威盛VIA  2003.11.06 上海笔试试题)  

4、我们将研发人员分为若干研究方向,对协议和算法理解(主要应用在网络通信、图象 语音压缩方面)、电子系统方案的研究、用MCU、DSP编程实现电路功能、用ASIC设计技术 设计电路(包括MCU、DSP本身)、电路功能模块设计(包括模拟电路和数字电路)、集成 电路后端设计(主要是指综合及自动布局布线技术)、集成电路设计与工艺接口的研究。  

你希望从事哪方面的研究?(可以选择多个方向。另外,已经从事过相关研发的人员可以详细描述你的研发经历)。(仕兰微面试题目)  

5、请谈谈对一个系统设计的总体思路。针对这个思路,你觉得应该具备哪些方面的知 识?(仕兰微面试题目)  

6、设想你将设计完成一个电子电路方案。请简述用EDA软件(如PROTEL)进行设计(包括 原理图和PCB图)到调试出样机的整个过程。在各环节应注意哪些问题?电源的稳定,电 容的选取,以及布局的大小。(汉王笔试)  

共同的注意点  

1.一般情况下,面试官主要根据你的简历提问,所以一定要对自己负责,把简历上的东西搞明白;  

2.个别招聘针对性特别强,就招目前他们确的方向的人,这种情况下,就要投其所好,尽 量介绍其所关心的东西。  

3.其实技术面试并不难,但是由于很多东西都忘掉了,才觉得有些难。所以最好在面试前 把该看的书看看。  

4.虽然说技术面试是实力的较量与体现,但是不可否认,由于不用面试官/公司所专领域 及爱好不同,也有面试也有很大的偶然性,需要冷静对待。不能因为被拒,就否认自己或 责骂公司。  

5.面试时要take it easy,对越是自己钟情的公司越要这样


阅读全文(1034) | 评论:0 | 复制链接

usbhw.c(2006-11-24 23:04:00)



/*----------------------------------------------------------------------------
 *      U S B  -  K e r n e l
 *----------------------------------------------------------------------------
 *      Name:    usbhw.c
 *      Purpose: USB Hardware layer module file for Philips LPC214x Family 
 *        Microprocessors
 *      Version: V1.04
 *----------------------------------------------------------------------------
 *      This software is supplied "AS IS" without any warranties, express, 
 *      implied or statutory, including but not limited to the implied 
 *      warranties of fitness for purpose, satisfactory quality and 
 *      noninfringement. Keil extends you a royalty-free right to reproduce and
 *      distribute executable files created using this software for use on 
 *      Philips LPC2xxx microcontroller devices only. Nothing else gives you the 
 *      right to use this software. 
 *
 *      Copyright (c) 2005 Keil Software.
 *        Modified by Philips Semiconductor
 *---------------------------------------------------------------------------*/
#include <LPC214x.h>                        /* LPC214x definitions */

#include "type.h"
#include "usb.h"
#include "usbcfg.h"
#include "usbreg.h"
#include "usbhw.h"
#include "usbcore.h"
#include "vcomuser.h"

/*
 *  Get Endpoint Address
 *    Parameters:      EPNum: Endpoint Number
 *                       EPNum.0..3: Address
 *                       EPNum.7:    Dir
 *    Return Value:    Endpoint Physical Address
 */

DWORD EPAdr (DWORD EPNum) {
  DWORD val;

  val = (EPNum & 0x0F) << 1;
  if (EPNum & 0x80) {
    val += 1;
  }
  return (val);
}


/*
 *  Write Command
 *    Parameters:      cmd:   Command
 *    Return Value:    None
 */

void WrCmd (DWORD cmd) {
    
  CMD_CODE = cmd;
  while ((DEV_INT_STAT & CCEMTY_INT) == 0);    
  DEV_INT_CLR = CCEMTY_INT;
}


/*
 *  Write Command Data
 *    Parameters:      cmd:   Command
 *                     val:   Data
 *    Return Value:    None
 */

void WrCmdDat (DWORD cmd, DWORD val) {
    
  CMD_CODE = cmd;
  while ((DEV_INT_STAT & CCEMTY_INT) == 0);    
  DEV_INT_CLR = CCEMTY_INT;
  CMD_CODE = val;
  while ((DEV_INT_STAT & CCEMTY_INT) == 0);    
  DEV_INT_CLR = CCEMTY_INT;
}


/*
 *  Read Command Data
 *    Parameters:      cmd:   Command
 *    Return Value:    Data Value
 */

DWORD RdCmdDat (DWORD cmd) {
  DWORD val;

  DEV_INT_CLR = CDFULL_INT; 
  CMD_CODE = cmd;
  while ((DEV_INT_STAT & CCEMTY_INT) == 0);    
  DEV_INT_CLR = CCEMTY_INT; 
  while ((DEV_INT_STAT & CDFULL_INT) == 0);    
  val = CMD_DATA;
  DEV_INT_CLR = CDFULL_INT;
  return (val);
}


/*
 *  USB Initialize Function
 *    Return Value:    None
 */

void USB_Init (void) {

  PCONP |= 0x80000000;                      /* Turn On USB PCLK */

  // Configure 48MHz USB Clock;  FOsc = 12MHz, M = 4, P = 2
  PLL48CFG  = 0x23;                         /* M = 4, P = 2 */
  PLL48CON  = PLLCON_PLLE;                  /* PLL Enable */
  PLL48FEED = 0xAA;                         /* Feed Sequence 1 */
  PLL48FEED = 0x55;                         /* Feed Sequence 2 */
    
  while ((PLL48STAT & PLLSTAT_PLOCK) == 0); /* Wait for PLL Lock */

  PLL48CON  = PLLCON_PLLE | PLLCON_PLLC;    /* PLL Enable & Connect */
  PLL48FEED = 0xAA;                         /* Feed Sequence 1 */
  PLL48FEED = 0x55;                         /* Feed Sequence 2 */

  VICVectAddr0 = (unsigned long)USB_ISR;    /* USB Interrupt -> Vector 0 */
  VICVectCntl0 = 0x20 | 22;                 /* USB Interrupt -> IRQ Slot 0 */
  VICIntEnable = 1 << 22;                   /* Enable USB Interrupt */

  DEV_INT_EN = DEV_STAT_INT;                /* Enable Device Status Interrupt */

#if 1 /* Partial Manual Reset */
  USB_Reset();
  USB_SetAddress(0);
#endif
}


/*
 *  USB Connect Function
 *    Parameters:      con:   Connect/Disconnect
 *    Return Value:    None
 */

void USB_Connect (BOOL con) {
  WrCmdDat(CMD_SET_DEV_STAT, DAT_WR_BYTE(con ? DEV_CON : 0));
}


/*
 *  USB Reset Function
 *    Return Value:    None
 */

void USB_Reset (void) {

  EP_INDEX = 0;
  MAXPACKET_SIZE = USB_MAX_PACKET0;
  EP_INDEX = 1;
  MAXPACKET_SIZE = USB_MAX_PACKET0;
  while ((DEV_INT_STAT & EP_RLZED_INT) == 0);

  EP_INT_CLR  = 0xFFFFFFFF;
  EP_INT_EN   = 0xFFFFFFFF;
  DEV_INT_CLR = 0xFFFFFFFF;
  DEV_INT_EN  = DEV_STAT_INT    | EP_SLOW_INT    | 
               (USB_SOF_EVENT   ? FRAME_INT : 0) |
               (USB_ERROR_EVENT ? ERR_INT   : 0);
}


/*
 *  USB Suspend Function
 *    Return Value:    None
 */

void USB_Suspend (void) {
  // Performed by Hardware
}


/*
 *  USB Resume Function
 *    Return Value:    None
 */

void USB_Resume (void) {
  // Performed by Hardware
}


/*
 *  USB Remote Wakeup Function
 *    Return Value:    None
 */

void USB_WakeUp (void) {

  if (USB_DeviceStatus & USB_GETSTATUS_REMOTE_WAKEUP) {
    WrCmdDat(CMD_SET_DEV_STAT, DAT_WR_BYTE(DEV_CON));
  }
}


/*
 *  USB Remote Wakeup Configuration Function
 *    Parameters:      cfg:   Enable/Disable
 *    Return Value:    None
 */

void USB_WakeUpCfg (BOOL cfg) {
  cfg;  // Not needed
}


/*
 *  USB Set Address Function
 *    Parameters:      adr:   USB Address
 *    Return Value:    None
 */

void USB_SetAddress (BYTE adr) {
  WrCmdDat(CMD_SET_ADDR, DAT_WR_BYTE(DEV_EN | adr)); /* Don't wait for next */
  WrCmdDat(CMD_SET_ADDR, DAT_WR_BYTE(DEV_EN | adr)); /*  Setup Status Phase */
}


/*
 *  USB Configure Function
 *    Parameters:      cfg:   Configure/Deconfigure
 *    Return Value:    None
 */

void USB_Configure (BOOL cfg) {

  WrCmdDat(CMD_CFG_DEV, DAT_WR_BYTE(cfg ? CONF_DVICE : 0));

  REALIZE_EP = 0x00000003;
  while ((DEV_INT_STAT & EP_RLZED_INT) == 0);
  DEV_INT_CLR = EP_RLZED_INT;
}


/*
 *  Configure USB Endpoint
 *    Parameters:      pEPD:  Pointer to Endpoint Descriptor
 *    Return Value:    None
 */

void USB_ConfigEP (USB_ENDPOINT_DESCRIPTOR *pEPD) {
  DWORD num;

  num = EPAdr(pEPD->bEndpointAddress);
  REALIZE_EP |= (1 << num);
  EP_INDEX = num;
  MAXPACKET_SIZE = pEPD->wMaxPacketSize;
  while ((DEV_INT_STAT & EP_RLZED_INT) == 0);
  DEV_INT_CLR = EP_RLZED_INT;
}


/*
 *  Set Direction for USB Control Endpoint
 *    Parameters:      dir:   Out (dir == 0), In (dir <> 0)
 *    Return Value:    None
 */

void USB_DirCtrlEP (BYTE dir) {
  dir;  // Not needed
}


/*
 *  Enable USB Endpoint
 *    Parameters:      EPNum: Endpoint Number
 *                       EPNum.0..3: Address
 *                       EPNum.7:    Dir
 *    Return Value:    None
 */

void USB_EnableEP (BYTE EPNum) {
  WrCmdDat(CMD_SET_EP_STAT(EPAdr(EPNum)), DAT_WR_BYTE(0));
}


/*
 *  Disable USB Endpoint
 *    Parameters:      EPNum: Endpoint Number
 *                       EPNum.0..3: Address
 *                       EPNum.7:    Dir
 *    Return Value:    None
 */

void USB_DisableEP (BYTE EPNum) {
  WrCmdDat(CMD_SET_EP_STAT(EPAdr(EPNum)), DAT_WR_BYTE(EP_STAT_DA));
}


/*
 *  Reset USB Endpoint
 *    Parameters:      EPNum: Endpoint Number
 *                       EPNum.0..3: Address
 *                       EPNum.7:    Dir
 *    Return Value:    None
 */

void USB_ResetEP (BYTE EPNum) {
  WrCmdDat(CMD_SET_EP_STAT(EPAdr(EPNum)), DAT_WR_BYTE(0));
}


/*
 *  Set Stall for USB Endpoint
 *    Parameters:      EPNum: Endpoint Number
 *                       EPNum.0..3: Address
 *                       EPNum.7:    Dir
 *    Return Value:    None
 */

void USB_SetStallEP (BYTE EPNum) {
  WrCmdDat(CMD_SET_EP_STAT(EPAdr(EPNum)), DAT_WR_BYTE(EP_STAT_ST));
}


/*
 *  Clear Stall for USB Endpoint
 *    Parameters:      EPNum: Endpoint Number
 *                       EPNum.0..3: Address
 *                       EPNum.7:    Dir
 *    Return Value:    None
 */

void USB_ClrStallEP (BYTE EPNum) {
  WrCmdDat(CMD_SET_EP_STAT(EPAdr(EPNum)), DAT_WR_BYTE(0));
}


/*
 *  Read USB Endpoint Data
 *    Parameters:      EPNum: Endpoint Number
 *                       EPNum.0..3: Address
 *                       EPNum.7:    Dir
 *                     pData: Pointer to Data Buffer
 *    Return Value:    Number of bytes read
 */

DWORD USB_ReadEP (BYTE EPNum, BYTE *pData) {
  DWORD cnt, n;

  USB_CTRL = ((EPNum & 0x0F) << 2) | CTRL_RD_EN;

  do {
    cnt = RX_PLENGTH;
  } while ((cnt & PKT_RDY) == 0);
  cnt &= PKT_LNGTH_MASK;

  for (n = 0; n < (cnt + 3) / 4; n++) {
    *((__packed DWORD *)pData) = RX_DATA;
    pData += 4;
  }

  USB_CTRL = 0;

  WrCmd(CMD_SEL_EP(EPAdr(EPNum)));
  WrCmd(CMD_CLR_BUF);

  return (cnt);
}


/*
 *  Write USB Endpoint Data
 *    Parameters:      EPNum: Endpoint Number
 *                       EPNum.0..3: Address
 *                       EPNum.7:    Dir
 *                     pData: Pointer to Data Buffer
 *                     cnt:   Number of bytes to write
 *    Return Value:    Number of bytes written
 */

DWORD USB_WriteEP (BYTE EPNum, BYTE *pData, DWORD cnt) {
  DWORD n;

  USB_CTRL = ((EPNum & 0x0F) << 2) | CTRL_WR_EN;

  TX_PLENGTH = cnt;

  for (n = 0; n < (cnt + 3) / 4; n++) {
    TX_DATA = *((__packed DWORD *)pData);
    pData += 4;
  }

  USB_CTRL = 0;

  WrCmd(CMD_SEL_EP(EPAdr(EPNum)));
  WrCmd(CMD_VALID_BUF);

  return (cnt);
}


/*
 *  USB Interrupt Service Routine
 */

void USB_ISR (void) __irq {
  DWORD disr, eisr, val, n, m;

  disr = DEV_INT_STAT;                      /* Device Interrupt Status */
    
  // Device Status Interrupt (Reset, Suspend/Resume, Connect change)
  if (disr & DEV_STAT_INT) {
    WrCmd(CMD_GET_DEV_STAT);
    val = RdCmdDat(DAT_GET_DEV_STAT);       /* Device Status */
    if (val & DEV_RST) {                    /* Reset */
      USB_Reset();
#if   USB_RESET_EVENT
      USB_Reset_Event();
#endif
      goto isr_end;
    }
    if (val & DEV_SUS_CH) {                 /* Suspend/Resume */
      if (val & DEV_SUS) {                  /* Suspend */
        USB_Suspend();
#if     USB_SUSPEND_EVENT
        USB_Suspend_Event();
#endif
      } else {                              /* Resume */
        USB_Resume();
#if     USB_RESUME_EVENT
        USB_Resume_Event();
#endif
      }
      goto isr_end;
    }
    if (val & DEV_CON_CH) {                 /* Connect change */
#if   USB_POWER_EVENT
      USB_Power_Event(val & DEV_CON);
#endif
      goto isr_end;
    }
  }

#if USB_SOF_EVENT
  // Start of Frame Interrupt
  if (disr & FRAME_INT) {
    WrCmd(CMD_RD_FRAME);
    val = RdCmdDat(DAT_RD_FRAME);
    val = val | (RdCmdDat(DAT_RD_FRAME) << 8);
    USB_SOF_Event(val);
  }
#endif

#if USB_ERROR_EVENT
  // Error Interrupt
  if (disr & ERR_INT) {
    WrCmd(CMD_RD_ERR_STAT);
    val = RdCmdDat(DAT_RD_ERR_STAT);
    if        (val & 0x01) {
      val = USB_ERR_PID;
    } else if (val & 0x02) {
      val = 0x100;  // Unexpected Error
    } else if (val & 0x04) {
      val = USB_ERR_CRC;
    } else if (val & 0x08) {
      val = USB_ERR_TIMEOUT;
    } else if (val & 0x10) {
      val = USB_ERR_EOP;
    } else if (val & 0x20) {
      val = 0x101;  // Buffer Overrun
    } else if (val & 0x40) {
      val = USB_ERR_BIT_STUFF;
    } else if (val & 0x80) {
      val = USB_ERR_DATA_TOGGLE;
    }
    USB_Error_Event(val);
  }
#endif

  // Ednpoint's Slow Interrupt
  if (disr & EP_SLOW_INT) {
    
    while ( eisr = EP_INT_STAT ) {           /* Endpoint Interrupt Status */
      // Check All Endpoints
      for (n = 0; n < USB_EP_NUM; n++) {
        if (eisr & (1 << n)) {
          m = n >> 1;
            
          EP_INT_CLR = 1 << n;
          while ((DEV_INT_STAT & CDFULL_INT) == 0);
          val = CMD_DATA;
          DEV_INT_CLR = CDFULL_INT;

          if ((n & 1) == 0) {
            // OUT Endpoint
            if (n == 0) {                     /* Control OUT Endpoint */
              if (val & EP_SEL_STP) {         /* Setup Packet */
                if (USB_P_EP[0]) {
                  USB_P_EP[0](USB_EVT_SETUP);
                  continue;
                }
              }
            }
            if (USB_P_EP[m]) {
              USB_P_EP[m](USB_EVT_OUT);
            }
          } else {
            // IN Endpoint
            if (USB_P_EP[m]) {
              USB_P_EP[m](USB_EVT_IN);
            }
          }
        }
      }
    }
  }

isr_end:
  DEV_INT_CLR = disr;
  VICVectAddr = 0;                          /* Acknowledge Interrupt */
}




阅读全文(1234) | 评论:0 | 复制链接

usbcore.c(2006-11-24 23:00:00)



/*----------------------------------------------------------------------------
 *      U S B  -  K e r n e l
 *----------------------------------------------------------------------------
 *      Name:    usbcore.c
 *      Purpose: USB Core Module file for Philips LPC214x Family 
 *        Microprocessors
 *      Version: V1.04
 *----------------------------------------------------------------------------
 *      This software is supplied "AS IS" without any warranties, express, 
 *      implied or statutory, including but not limited to the implied 
 *      warranties of fitness for purpose, satisfactory quality and 
 *      noninfringement. Keil extends you a royalty-free right to reproduce and
 *      distribute executable files created using this software for use on 
 *      Philips LPC2xxx microcontroller devices only. Nothing else gives you the 
 *      right to use this software. 
 *
 *      Copyright (c) 2005 Keil Software.
 *        Modified by Philips Semiconductor
 *---------------------------------------------------------------------------*/
#include "type.h"

#include "usb.h"
#include "usbcfg.h"
#include "usbhw.h"
#include "usbcore.h"
#include "usbdesc.h"
#include "vcomuser.h"


WORD  USB_DeviceStatus;
BYTE  USB_DeviceAddress;
BYTE  USB_Configuration;
DWORD USB_EndPointMask;
DWORD USB_EndPointHalt;
BYTE  USB_NumInterfaces;
BYTE  USB_AltSetting[USB_IF_NUM];

BYTE  EP0Buf[USB_MAX_PACKET0];

USB_EP_DATA EP0Data;

USB_SETUP_PACKET SetupPacket;


/*
 *  Reset USB Core
 *    Parameters:      None
 *    Return Value:    None
 */

void USB_ResetCore (void) {

  USB_DeviceStatus  = USB_POWER;
  USB_DeviceAddress = 0;
  USB_Configuration = 0;
  USB_EndPointMask  = 0x00010001;
  USB_EndPointHalt  = 0x00000000;
}


/*
 *  USB Request - Setup Stage
 *    (global SetupPacket)
 *    Parameters:      None
 *    Return Value:    None
 */

void USB_SetupStage (void) {
  USB_ReadEP(0x00, (BYTE *)&SetupPacket);
}


/*
 *  USB Request - Data In Stage
 *    Parameters:      None (global EP0Data)
 *    Return Value:    None
 */

void USB_DataInStage (void) {
  DWORD cnt;

  if (EP0Data.Count > USB_MAX_PACKET0) {
    cnt = USB_MAX_PACKET0;
  } else {
    cnt = EP0Data.Count;
  }
  cnt = USB_WriteEP(0x80, EP0Data.pData, cnt);
  EP0Data.pData += cnt;
  EP0Data.Count -= cnt;
}


/*
 *  USB Request - Data Out Stage
 *    Parameters:      None (global EP0Data)
 *    Return Value:    None
 */

void USB_DataOutStage (void) {
  DWORD cnt;

  cnt = USB_ReadEP(0x00, EP0Data.pData);
  EP0Data.pData += cnt;
  EP0Data.Count -= cnt;
}


/*
 *  USB Request - Status In Stage
 *    Parameters:      None
 *    Return Value:    None
 */

void USB_StatusInStage (void) {
  USB_WriteEP(0x80, NULL, 0);
}


/*
 *  USB Request - Status Out Stage
 *    Parameters:      None
 *    Return Value:    None
 */

void USB_StatusOutStage (void) {
  USB_ReadEP(0x00, EP0Buf);
}


/*
 *  Get Status USB Request
 *    Parameters:      None (global SetupPacket)
 *    Return Value:    TRUE - Success, FALSE - Error
 */

__inline BOOL USB_GetStatus (void) {
  DWORD n, m;

  switch (SetupPacket.bmRequestType.BM.Recipient) {

    case REQUEST_TO_DEVICE:
      EP0Data.pData = (BYTE *)&USB_DeviceStatus;
      USB_DataInStage();
      break;

    case REQUEST_TO_INTERFACE:
      if ((USB_Configuration != 0) && (SetupPacket.wIndex.WB.L < USB_NumInterfaces)) {
        *((WORD *)EP0Buf) = 0;
        EP0Data.pData = EP0Buf;
        USB_DataInStage();
      } else {
        return (FALSE);
      }
      break;

    case REQUEST_TO_ENDPOINT:
      n = SetupPacket.wIndex.WB.L & 0x8F;
      m = (n & 0x80) ? ((1 << 16) << n) : (1 << n);
      if (((USB_Configuration != 0) || ((n & 0x0F) == 0)) && (USB_EndPointMask & m)) {
        *((WORD *)EP0Buf) = (USB_EndPointHalt & m) ? 1 : 0;
        EP0Data.pData = EP0Buf;
        USB_DataInStage();
      } else {
        return (FALSE);
      }
      break;

    default:
      return (FALSE);

  }
  return (TRUE);
}


/*
 *  Set/Clear Feature USB Request
 *    Parameters:      sc:    0 - Clear, 1 - Set
 *                            None (global SetupPacket)
 *    Return Value:    TRUE - Success, FALSE - Error
 */

__inline BOOL USB_SetClrFeature (DWORD sc) {
  DWORD n, m;

  switch (SetupPacket.bmRequestType.BM.Recipient) {

    case REQUEST_TO_DEVICE:
      if (SetupPacket.wValue.W == USB_FEATURE_REMOTE_WAKEUP) {
        if (sc) {
          USB_WakeUpCfg(1);
          USB_DeviceStatus |=  USB_GETSTATUS_REMOTE_WAKEUP;
        } else {
          USB_WakeUpCfg(0);
          USB_DeviceStatus &= ~USB_GETSTATUS_REMOTE_WAKEUP;
        }
      } else {
        return (FALSE);
      }
      break;

    case REQUEST_TO_INTERFACE:
      return (FALSE);

    case REQUEST_TO_ENDPOINT:
      n = SetupPacket.wIndex.WB.L & 0x8F;
      m = (n & 0x80) ? ((1 << 16) << n) : (1 << n);
      if ((USB_Configuration != 0) && ((n & 0x0F) != 0) && (USB_EndPointMask & m)) {
        if (SetupPacket.wValue.W == USB_FEATURE_ENDPOINT_STALL) {
          if (sc) {
            USB_SetStallEP(n);
            USB_EndPointHalt |=  m;
          } else {
            USB_ClrStallEP(n);
            USB_EndPointHalt &= ~m;
          }
        } else {
          return (FALSE);
        }
      } else {
        return (FALSE);
      }
      break;

    default:
      return (FALSE);
  }
  return (TRUE);
}


/*
 *  Get Descriptor USB Request
 *    Parameters:      None (global SetupPacket)
 *    Return Value:    TRUE - Success, FALSE - Error
 */

__inline BOOL USB_GetDescriptor (void) {
  BYTE  *pD;
  DWORD len, n;

  switch (SetupPacket.bmRequestType.BM.Recipient) {

    case REQUEST_TO_DEVICE:
      switch (SetupPacket.wValue.WB.H) {

        case USB_DEVICE_DESCRIPTOR_TYPE:    //
          EP0Data.pData = (BYTE *)USB_DeviceDescriptor;
          len = USB_DEVICE_DESC_SIZE;
          break;

        case USB_CONFIGURATION_DESCRIPTOR_TYPE:      //
          pD = (BYTE *)USB_ConfigDescriptor;
          for (n = 0; n != SetupPacket.wValue.WB.L; n++) {
            if (((USB_CONFIGURATION_DESCRIPTOR *)pD)->bLength != 0) {
              pD += ((USB_CONFIGURATION_DESCRIPTOR *)pD)->wTotalLength;
            }
          }
          if (((USB_CONFIGURATION_DESCRIPTOR *)pD)->bLength == 0) {
            return (FALSE);
          }
          EP0Data.pData = pD;
          len = ((USB_CONFIGURATION_DESCRIPTOR *)pD)->wTotalLength;
          break;

        case USB_STRING_DESCRIPTOR_TYPE:
          EP0Data.pData = (BYTE *)USB_StringDescriptor + SetupPacket.wValue.WB.L;
          len = ((USB_STRING_DESCRIPTOR *)EP0Data.pData)->bLength;
          break;

        default:
          return (FALSE);
      }
      break;

    case REQUEST_TO_INTERFACE:
      switch (SetupPacket.wValue.WB.H) {
        default:
          return (FALSE);
      }
      break;

    default:
      return (FALSE);
  }

  if (EP0Data.Count > len) {
    EP0Data.Count = len;
  }
  USB_DataInStage();

  return (TRUE);
}


/*
 *  Set Configuration USB Request
 *    Parameters:      None (global SetupPacket)
 *    Return Value:    TRUE - Success, FALSE - Error
 */

__inline BOOL USB_SetConfiguration (void) {
  USB_COMMON_DESCRIPTOR *pD;
  DWORD                  alt, n, m;

  if (SetupPacket.wValue.WB.L) {
    pD = (USB_COMMON_DESCRIPTOR *)USB_ConfigDescriptor;
    while (pD->bLength) {

      switch (pD->bDescriptorType) {

        case USB_CONFIGURATION_DESCRIPTOR_TYPE:
          if (((USB_CONFIGURATION_DESCRIPTOR *)pD)->bConfigurationValue == SetupPacket.wValue.WB.L) {
            USB_Configuration = SetupPacket.wValue.WB.L;
            USB_NumInterfaces = ((USB_CONFIGURATION_DESCRIPTOR *)pD)->bNumInterfaces;
            for (n = 0; n < USB_IF_NUM; n++) {
              USB_AltSetting[n] = 0;
            }
            for (n = 1; n < 16; n++) {
              if (USB_EndPointMask & (1 << n)) {
                USB_DisableEP(n);
              }
              if (USB_EndPointMask & ((1 << 16) << n)) {
                USB_DisableEP(n | 0x80);
              }
            }
            USB_EndPointMask = 0x00010001;
            USB_EndPointHalt = 0x00000000;
            USB_Configure(TRUE);
            if (((USB_CONFIGURATION_DESCRIPTOR *)pD)->bmAttributes & USB_CONFIG_SELF_POWERED) {
              USB_DeviceStatus |=  USB_GETSTATUS_SELF_POWERED;
            } else {
              USB_DeviceStatus &= ~USB_GETSTATUS_SELF_POWERED;
            }
          } else {
            (BYTE *)pD += ((USB_CONFIGURATION_DESCRIPTOR *)pD)->wTotalLength;
            continue;
          }
          break;

        case USB_INTERFACE_DESCRIPTOR_TYPE:
          alt = ((USB_INTERFACE_DESCRIPTOR *)pD)->bAlternateSetting;
          break;

        case USB_ENDPOINT_DESCRIPTOR_TYPE:
          if (alt == 0) {
            n = ((USB_ENDPOINT_DESCRIPTOR *)pD)->bEndpointAddress & 0x8F;
            m = (n & 0x80) ? ((1 << 16) << n) : (1 << n);
            USB_EndPointMask |= m;
            USB_ConfigEP((USB_ENDPOINT_DESCRIPTOR *)pD);
            USB_EnableEP(n);
            USB_ResetEP(n);
          }
          break;

      }
      (BYTE *)pD += pD->bLength;
    }
  }
  else {
    USB_Configuration = 0;
    for (n = 1; n < 16; n++) {
      if (USB_EndPointMask & (1 << n)) {
        USB_DisableEP(n);
      }
      if (USB_EndPointMask & ((1 << 16) << n)) {
        USB_DisableEP(n | 0x80);
      }
    }
    USB_EndPointMask  = 0x00010001;
    USB_EndPointHalt  = 0x00000000;
    USB_Configure(FALSE);     //??>-->usbhw.c
  }

  if (USB_Configuration == SetupPacket.wValue.WB.L) {
    return (TRUE);
  } else {
    return (FALSE);
  }
}


/*
 *  Set Interface USB Request
 *    Parameters:      None (global SetupPacket)
 *    Return Value:    TRUE - Success, FALSE - Error
 */

__inline BOOL USB_SetInterface (void) {
  USB_COMMON_DESCRIPTOR *pD;
  DWORD                  ifn, alt, old, msk, n, m;
  BOOL                   set;

  if (USB_Configuration == 0) return (FALSE);

  set = FALSE;
  pD  = (USB_COMMON_DESCRIPTOR *)USB_ConfigDescriptor;
  while (pD->bLength) {
    switch (pD->bDescriptorType) {

      case USB_CONFIGURATION_DESCRIPTOR_TYPE:
        if (((USB_CONFIGURATION_DESCRIPTOR *)pD)->bConfigurationValue != USB_Configuration) {
          (BYTE *)pD += ((USB_CONFIGURATION_DESCRIPTOR *)pD)->wTotalLength;
          continue;
        }
        break;

      case USB_INTERFACE_DESCRIPTOR_TYPE:
        ifn = ((USB_INTERFACE_DESCRIPTOR *)pD)->bInterfaceNumber;
        alt = ((USB_INTERFACE_DESCRIPTOR *)pD)->bAlternateSetting;
        msk = 0;
        if ((ifn == SetupPacket.wIndex.WB.L) && (alt == SetupPacket.wValue.WB.L)) {
          set = TRUE;
          old = USB_AltSetting[ifn];
          USB_AltSetting[ifn] = (BYTE)alt;
        }
        break;

      case USB_ENDPOINT_DESCRIPTOR_TYPE:
        if (ifn == SetupPacket.wIndex.WB.L) {
          n = ((USB_ENDPOINT_DESCRIPTOR *)pD)->bEndpointAddress & 0x8F;
          m = (n & 0x80) ? ((1 << 16) << n) : (1 << n);
          if (alt == SetupPacket.wValue.WB.L) {
            USB_EndPointMask |=  m;
            USB_EndPointHalt &= ~m;
            USB_ConfigEP((USB_ENDPOINT_DESCRIPTOR *)pD);
            USB_EnableEP(n);
            USB_ResetEP(n);
            msk |= m;
          }
          else if ((alt == old) && ((msk & m) == 0)) {
            USB_EndPointMask &= ~m;
            USB_EndPointHalt &= ~m;
            USB_DisableEP(n);
          }
        }
        break;

    }
    (BYTE *)pD += pD->bLength;
  }
  return (set);
}


/*
 *  USB Endpoint 0 Event Callback
 *    Parameter:       event
 */

void USB_EndPoint0 (DWORD event) {

  BYTE UARTSettingCmd, UARTSettingData;

  switch (event) {

    case USB_EVT_SETUP:
      USB_SetupStage();
      USB_DirCtrlEP(SetupPacket.bmRequestType.BM.Dir);
      EP0Data.Count = SetupPacket.wLength;
      switch (SetupPacket.bmRequestType.BM.Type) {

        case REQUEST_STANDARD:

          switch (SetupPacket.bRequest) {

            case USB_REQUEST_GET_STATUS:
              if (!USB_GetStatus()) {
                goto stall_i;
              }
              break;

            case USB_REQUEST_CLEAR_FEATURE:
              if (!USB_SetClrFeature(0)) {
                goto stall_i;
              }
              USB_StatusInStage();
#if USB_FEATURE_EVENT
              USB_Feature_Event();
#endif
              break;              

            case USB_REQUEST_SET_FEATURE:
              if (!USB_SetClrFeature(1)) {
                goto stall_i;
              }
              USB_StatusInStage();
#if USB_FEATURE_EVENT
              USB_Feature_Event();
#endif
              break;              

            case USB_REQUEST_SET_ADDRESS:
              switch (SetupPacket.bmRequestType.BM.Recipient) {
                case REQUEST_TO_DEVICE:
                  USB_DeviceAddress = 0x80 | SetupPacket.wValue.WB.L;
                  USB_StatusInStage();
                  break;
                default:
                  goto stall_i;
              }
              break;

            case USB_REQUEST_GET_DESCRIPTOR:
              if (!USB_GetDescriptor()) {
                goto stall_i;
              }                  
              break;              

            case USB_REQUEST_SET_DESCRIPTOR:
/*stall_o:*/  USB_SetStallEP(0x00);
              EP0Data.Count = 0;
              break;

            case USB_REQUEST_GET_CONFIGURATION:
              switch (SetupPacket.bmRequestType.BM.Recipient) {
                case REQUEST_TO_DEVICE:
                  EP0Data.pData = &USB_Configuration;
                  USB_DataInStage();
                  break;
                default:
                  goto stall_i;
              }
              break;

            case USB_REQUEST_SET_CONFIGURATION:
              switch (SetupPacket.bmRequestType.BM.Recipient) {
                case REQUEST_TO_DEVICE:
                  if (!USB_SetConfiguration()) {
                    goto stall_i;
                  }
                  USB_StatusInStage();
#if USB_CONFIGURE_EVENT
                  USB_Configure_Event();
#endif
                  break;
                default:
                  goto stall_i;
              }
              break;              

            case USB_REQUEST_GET_INTERFACE:
              switch (SetupPacket.bmRequestType.BM.Recipient) {
                case REQUEST_TO_INTERFACE:
                  if ((USB_Configuration != 0) && 
                      (SetupPacket.wIndex.WB.L < USB_NumInterfaces)) {
                    EP0Data.pData = USB_AltSetting + SetupPacket.wIndex.WB.L;
                    USB_DataInStage();
                  } else {
                    goto stall_i;
                  }
                  break;
                default:
                  goto stall_i;
              }
              break;              

            case USB_REQUEST_SET_INTERFACE:
              switch (SetupPacket.bmRequestType.BM.Recipient) {
                case REQUEST_TO_INTERFACE:
                  if (!USB_SetInterface()) {
                    goto stall_i;
                  }
                  USB_StatusInStage();
#if USB_INTERFACE_EVENT
                  USB_Interface_Event();
#endif
                  break;
                default:
                  goto stall_i;
              }
              break;              

            default:
              goto stall_i;

          }
          break;

        case REQUEST_CLASS:
#if USB_CLASS
          switch (SetupPacket.bmRequestType.BM.Recipient) {
            case REQUEST_TO_INTERFACE:
//            break;              
            default:
              goto stall_i;
          }              
#else
          goto stall_i;
#endif  /* USB_CLASS */

        case REQUEST_VENDOR:
#if USB_VCOM
          UARTSettingCmd = SetupPacket.bRequest & 0xFF;
          UARTSettingData = SetupPacket.wValue.WB.L;
          if (!VCOM_SetSIOSetup( UARTSettingCmd, UARTSettingData )) {
            goto stall_i;
          }
          USB_DataInStage();
#endif      
        break;

        default:
stall_i:  USB_SetStallEP(0x80);
          EP0Data.Count = 0;
          break;

      }
      break;

    case USB_EVT_OUT:
      if (SetupPacket.bmRequestType.BM.Dir == 0) {
        if (EP0Data.Count) {
          USB_DataOutStage();
          if (EP0Data.Count == 0) {
            switch (*((WORD *)&SetupPacket)) {
              default:
                goto stall_i;
            }
            USB_StatusInStage();
          }
        }
      } else {
        USB_StatusOutStage();
      }
      break;

    case USB_EVT_IN:
      if (SetupPacket.bmRequestType.BM.Dir == 1) {
        if (EP0Data.Count) {
          USB_DataInStage();
        }
      } else {
        if (USB_DeviceAddress & 0x80) {
          USB_DeviceAddress &= 0x7F;
          USB_SetAddress(USB_DeviceAddress);
        }
      }
      break;

    case USB_EVT_IN_STALL:
      USB_ClrStallEP(0x80);
      break;

    case USB_EVT_OUT_STALL:
      USB_ClrStallEP(0x00);
      break;

  }
}






阅读全文(1507) | 评论:0 | 复制链接