完成一个项目开发后,有关团队软件开发一些记录。
先尽可能多的了解要处理的任务,再启动编程。
分层设计代码,最好用现成的框架(framework)。
项目规划,模块化设计程序,能更灵活的适应新的需求变化。
一定用版本管理系统,如svn,git等。
先启动任务的主干,暂时抛弃不理解的部分,边做边加不理解的部分。
伪代码编程的使用。
开始编程前,编码格式规范的制定。
- 不使用魔鬼数字,使用具名常量代替。
- 状态变量只在状态机中改变。
- 好的代码、变量、函数命名本身就是注释。
- 等等
如果程序乱飞,有可能是堆栈溢出造成的。
调试方法:
- Error code变量引入。
- 输出错误信息。
- 显示错误信息。
- 等等
团队编码(peer to peer)以及SVN、git、eclipse等工具的使用(标签与分支,checkin,checkout)。
及时沟通、交流。
最后,多读书。推荐这3本:《代码大全》、《人月神话》、《编程珠玑》。
原理图设计基本原则:易于理解。
以下是我的原理图设计检查规范,按照序号顺序检查。
索引 | 项目 | 描述 | 备注 |
---|---|---|---|
1 | 工具 | Orcad Capture | |
2 | 图纸file name | 格式:编号.图纸名称 | |
3 | 图纸size | 公制,A4 | |
4 | 公司Name | xxx | 设置:Verdana, 常规,小六 |
5 | Title | 项目名称,板名-子部分名称 | 设置:Arial, 粗体,小五 |
6 | Document Number | 编号-日期等-图纸号 | 设置:Arial, 常规,小六 |
7 | Rev | X.XX | 设置:Arial, 常规,小六 |
8 | sheet number | X of Y X为当前原理图纸编号。 Y为总原理图纸数。 |
|
9 | 标注Annotate | 放置离页连接(Off-page)和交互页码 | 改版的原理图不要对器件重新编号,否则PCB Layout时会重新计算费用。 |
10 | 原理图上加上必要的标识说明 | Design Note用于原理图说明 CAD Note用于layout说明。 |
Arial, 常规,小六 |
11 | 图分块 | 将电路图按功能分块,尽量不要把多个电路放在一张图上 | |
12 | 开关的使用 | 使用了开关,要注明开关设置及功能分配 | |
13 | 信号命名 | 对于多功能使用,命名中包含各个功能、逻辑、电压、输入输出方向 对于GPIO引脚,标明GPIO port number |
|
14 | 被动元器件 | 如电阻、电容,要包含如精度、封装等信息 | |
15 | 不安装的元器件 | 标明“NM”字样 | |
16 | 0欧姆电阻 | 如是否添加jumper、switcher | |
17 | 连接器 | 添加信号分布说明,避免错误的插入或信号分配 | |
18 | 原理图最后检查 | 器件原理库文件是否正确; 工作原理连接是否正确; 封装名称; 板间连接的引脚分配是否需要翻转; 线缆与板连接引脚分配是否需要翻转; 标号复位后重新标注; 添加离页连接; |
|
19 | FPGA | 根据FPGA走线重新调整线序 | |
20 | 原理图器件库设计 | 器件具有相同名称的电源引脚、GND引脚,要将其属性设置为’Power‘。否则生成网表时会出现错误; 子板设计时,要注意两个插座的名称CN1/CN2,不要搞错。且位置要沿用以前的PCB设计。 |
|
21 | DRC检查 | 原理图完成后,一定要进行设计规则检查(DRC) | |
22 | 再版设计时 | 如果通过实验确定了有些器件(如0R/NM等器件)是否使用,那么可以适当删除这些器件。 |
以下是我的layout设计检查规范,按照序号顺序检查。
索引 | 项目 | 描述 | 备注 |
---|---|---|---|
1 | 设置布线规则 | normal线宽:8mil、6mil; 过孔/通孔尺寸:24D12; 整板盖油:过孔(tenting); 安装孔尺寸:250D125; Clearance:正常布线为6mil,铺地时为20mil; |
|
2 | 丝印文字尺寸 | 25*5 | 5倍比例,50*10(Truetype,Verdana) |
3 | 器件封装 | ||
4 | 板子尺寸 | ||
5 | 器件布局 | 是否合理,能否顺利安装、组装,插接件能否契合安装 | |
6 | 金属铺地 | 是否绕开了机械层(挖洞) | |
7 | 内层分割 | 是否绕开了机械层(挖洞) | |
8 | 禁止布线区域 | 设置是否合理 |
索引 | 项目 | 描述 | 备注 |
---|---|---|---|
1 | 电源线 | 弄清需要的供电能力(如,多少A),根据电源线的阻抗确定线宽(2mm/A),确保不要超过2A/mm,最好使用电源层;如果太窄了,还会有发热问题需要注意 如果使用了过孔,确保足够的过孔数量,以满足通过的电流量 |
|
2 | 地 | 模拟地对噪声敏感,避免从地引入噪声 模拟地、数字地,最好做到单点接地,连接时,两者可以通过一个噪声抑制器件进行连接,如,磁珠; 高频信号尤其要注意,如,pcb蓝牙天线下面不能有任何的地平面;及,信号与地之间的距离要注意,不能过近,确保距离大于2倍差分信号的的距离; |
|
3 | 屏蔽地 | 信号两侧的屏蔽地,确保接入地层,不要开路; 过孔之间距离5~10mm |
|
4 | 大面积闲置地 | 放置足够的过孔,以防焊接时,过加热炉时,铜层翘起 | |
5 | 芯片散热盘 | 仔细阅读相关器件手册,确保其腹部散热焊盘的连接,如,有些器件要求是要接地的; 同时,保证散热焊盘的尺寸达到散热的要求; 确保散热焊盘有足够的接地过孔 |
|
6 | 高速信号 | 指的是LPDDR4/DDR3,HDMI,PCIe,USB 3.0,SATA,USB 2.0,LVDS,CSI等,针对这些信号,需要仔细阅读相关模块的layout注意事项及指导; 如,差分对需要做等长,阻抗匹配; 做SI仿真; |
索引 | 项目 | 描述 | |
---|---|---|---|
1 | 器件封装 | 是否正确 | |
2 | 器件布局 | 是否合理(板子外形尺寸、关键器件、有利于安装、散热影响等等) | |
3 | 内层分割 | 是否绕开了机械层(挖洞) | |
4 | DRC检查 | 是否与原理图连接一致 | |
5 | 金属铺地 | 是否绕开了机械层(挖洞) | |
6 | 盖油处理 | 整板盖油:过孔(tenting) | |
7 | 丝印 | 大小要统一; 是否正确的放置在器件附近且大小一致; 不要放置在孔上; 是否方向一致; |
5倍比例,50*10(Truetype,Verdana) |
8 | Logo | 添加公司Logo | |
9 | 板名称 | 是否放置 | |
10 | 日期 | 添加设计完成日期 | |
11 | 防静电标志ESD | 是否放置 | |
12 | RoHS标志 | 是否放置 | |
13 | 标签标志 | (白色丝印条状)是否放置 | |
14 | 废弃物处理标志 | 是否放置 |
索引 | 项目 |
---|---|
1 | 加工数量 |
2 | 层数 |
3 | 叠层顺序 |
4 | 是否有阻抗要求 |
5 | 板厚 |
6 | 丝印颜色 |
7 | 阻焊颜色 |
8 | 是否金属包边 |
9 | 是否沉金 |
10 | 工艺边5mm |
当前,从速度上看,FlexRay总线处于比较尴尬的位置:比其低速上,用CAN(CAN-FD,CAN-XL)总线更广泛,而且,新的规范已经逼近甚至超过FlexRay;比其高速上,ethernet发展迅速。
FlexRay通信系统并非仅仅是一个通信协议,它还包括一种特殊设计的高速收发器,并定义了FlexRay节点不同部件间的硬件和软件接口。
FlexRay利用两条独立的物理线路进行通信,每条的数据速率为10Mbps。两条通信线路主要用来实现冗余,因此消息传输具有容错能力,也可利用两条线路来传输不同消息,这样数据吞吐量可加倍。这也是FlexRay的精华所在(提出了解决硬件可靠性的方法:双通信通道,有源星型连接器)。
与其它时间触发通信协议相同,作为数据时间确定性优点的叙述,不考虑通信受干扰,从而需要出错重发的情况,是不完整的。
重发的实行需通过调度在其它动态时间槽内安排,此时数据时间确定性就会有很大的变化。
当然,有两个通道同时送同一数据,出错的概率就会减少,但是,由于节点位置,电缆位置相同,通信口又在同一芯片上,接同一个电源,受干扰与出错的机会相差不会太大。
总线 | 应用场合 |
---|---|
LIN | 前照灯、空调-主控、雨刷器、电动车窗、后雨刷器、尾灯、车门、座椅、后视镜、雨量传感器、转向信号 |
CAN | 导航/车载音箱、EPS(电动力转向)、仪表板、发动机、毫米波雷达、制动、加速踏板、BCM(车身控制模块)、车门-主控、线控转向-中央电控单元、安全带、悬架。 需要500kbps的速率:ABS(制动防抱死系统)ETM(电子气节门模块) TCM(变速器控制模块)ECM(发动机控制模块) 需要125kbps的速率:DMM(车门主控模块)CCM(温度控制模块)DIM(驾驶员信息模块) |
FlexRay | 制动、星形耦合器 |
总线中,送信方检测回环的目的:检测线上有突然的位改变,如ESD,闪电,强噪声等造成bit翻转。
同样,受信方要想检测该情况,用checksum(LIN),CRC(CAN),填充位(CAN)。 有关检查错误的对比:
综上:
总线 | 检查突然的bit error的位置 |
---|---|
LIN | Parity Error checksum Error 连续9bit “L” 连续9bit “H” |
CAN | CRC Error 连续5bit “L” Stuff Error 连续5bit “H” Stuff Error |
CAN-FD | 除上述CAN所说的检测位置外,还增加了 Header CRC Error |
FlexRay | Header CRC Error CRC Error 连续9bit “L” 连续9bit “H” |
原文请参考这里。
优缺点 | Fly-by | T-topology |
---|---|---|
图 | ![]() |
![]() |
特点 | 起源于JEDEC的DDR3规范,用于差分clock,address,command,control信号 | 对于Fly-by的改进 |
优点 | 减少线长及数量,从而减少了信号的反射,从而保证了信号完整性和时序; 减少了address和数据之间同时切换噪声(SSN); 对于single-die的DDR,布线容易; |
当DDR采用multi-die封装时,绕线容易; |
缺点 | 当使用大容量DDR(*DDP,QDP)时,第一个node需要额外绕线(绕等长线),所以,不适合multi-die的DDR | 由于信号线较长,所以容易引起信号过冲等信号反射现象 |
DDP: Double Die Package
QDP: Quad Die Package