数据流图懂不懂?

转自:http://www.cnblogs.com/spring5/archive/2012/04/29/2485238.html

数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。(百科)

 

谈谈我的一点理解

有时候我们要开发或者理解一个系统,总体的系统结构我们弄清楚了,但是细节上需要再深入,而数据流图“自顶向下,由外到内,逐步细化”的思想就凸显出很重要的作用,它可以作为我们系统分析的指导方法。

 

数据流图分析关注的重点是数据,将面向控制的信息作为数据进行处理,包括了系统的所有数据,能准确的抽象系统数据的流向和处理过程.概括的描述当数据在系统流程中流动和处理的移动变换过程;数据流图分层进行分析,对顶层图的分析可以发现是否有输入信息或需要输出的信息被遗漏,容易及早发现系统各部分的逻辑错误,也容易修正.每一层都明确强调“需要什么”,“干了什么”“给出什么”;

这样逐层分解下去,系统被严密的展开,系统的框架就展现出来了.采用数据流图进行分析,可以提高分析的可见性和可控性,更容易理解软件要完成什么功能,数据来源于哪里,结果要输出到哪里等等,清晰明了。

 

下面我们来看看数据流图的组成,设计原则和应用


基本图形符号


加工(数据处理):输入数据在此进行变换产生输出数据。加工对象为:数据结构或数据内容。

数据流:箭头表示数据流向,作为加工之间传输数据的命名通道(数据流有名字),或数据存储文件与加工之间的非命名通道(数据流没名字,但其连接的加工和文件的名字,和流向可以确定其含义)。

 

同一个数据流图上不能有同名的数据流,如果两个以上的数据流指向一个加工,或是从一个加工中输出两个以上的数据流,这些数据流往往存在一定关系,如图:


 

数据存储文件:流向数据存储的数据流可以理解为写入文件或查询文件,从数据存储流出的数据流可以理解为从文件读数据或得到查询结果。

 

数据源点或终点:是系统外部环境中的实体,也称外部实体。它们作为系统与系统外部环境的接口界面,在实际问题中可能是人员、组织、其他硬件系统等。一般出现在顶层数据流图中。

 

数据流图的设计原则



下面我们通过一些示例来说明这些设计原则

 

示例1


上图违反了父图与子图的平衡原则

因为父图中有提货单输出流,但子图中没有与这条输出流相关的输出流。

我们看两者的输入流,父图的输入流是订货单,而子图的输入流是数量,账号,客户,这是平衡的,因为子图的三条输入流是对父图输入流的分解,同样子图中的加工4.14.24.3也可以看成是对父图加工4的分解,这符合自顶向下,逐层细化原则

 

示例2

下面是一张有错的数据流图。


1)根据数据守恒原则,外部实体和外部实体,外部实体和数据存储之间不能存在数据流,,存储与存储之间也不应该有数据流,数据流必须跟加工有关,没有加工数据流不可能流来流去的。


2)对于加工,输入是A,输出还是A,也违反了数据守恒原则,输入与输出一样,加工没有作用。


3)对于加工,只有输入没有输出,违反了数据守恒原则。比如,人不可能只吃饭,不大小便。嘿嘿



4)对于加工,只有输出没有输入,违反了数据守恒原则。比如,人不可能一直大小便,但不吃饭。嘿嘿

 

 

示例3


加工细节隐蔽原则说的是:在画父图时,只需画出加工和加工之间的关系,而不必画出各个加工内部的细节,例如上面的父图中,并没有画出加工1的内部细节

再进行对加工1进行细化的时候,我们就应该画出它的内部细节,如第二个图。

 

简化加工之间的关系:加工间的数据流越少,各个加工就越相对独立,耦合越低,所以应尽量减少加工间输入/输出数据流的数目。

 

均匀分解:不要出现,一些加工分解了10层,而另一些加工分解了3层这样的情况

 

忽略枝节:暂时不要考虑一些例外情况,出错处理等枝节性问题。

 

表现的是输入流而不是控制流:不要和程序流程图混淆,数据流图,强调从数据加工的角度来描述系统,自然是数据流。


这些原则中,最重要的当属:保持父图与子图平衡,保持数据平衡,加工细节隐蔽

 一般从这三个原则来考查一张数据流图是否正确。

  

数据字典

 

数据字典的就是对数据流图中出现的所有被命名的图形元素在数据字典中作为一个词条加以定义,使每个图形元素的名称都有一个确切的解释。

 

在对数据流和数据文件词条进行描述时可能包含一定的数据结构,对于数据结构的描述常用的是定义是。如下表

 

在数据字典中有4种类型的条目:

1、数据项条目:通常为数据项的值类型,允许的取值范围等

2、数据流条目:给出某个数据流的定义,列出该数据流的各组成数据项。

3、文件条目:对文件的定义,列出期组成的数据项

4、加工条目:对每个不能再分解的加工做说明,包括加工的激发条件,加工的逻辑,优先级等等。

 

示例:

图书管理系统中

查询请求信息=[查询读者请求信息|查询图书请求信息]

读者情况=读者号+姓名+所在单位+{借书情况}

 

根据上面的定义表,我们很容易看出这些条目的意思。

 

 

下面我们来看一个数据流图的综合应用问题,这样有助于我们理解数据流图。

 

需求:






根据以上信息提出的几个问题!希望对这几个问题的解析,能加深大家对数据流图的理解。




对于问题1:

我们前面提到过,

可以通过数据流图那三个重要设计原则(保持父图与子图平衡,保持数据平衡,加工细节隐蔽)来考查一张数据流图是否正确。

1查看是否平衡,即子图中的输入流合输出流和父图是否对应;

2、查看数据守恒,处理查询请求没有输入,登记读者信息没有输出.

正确应该如红色箭头画法。



对于问题2

1、首先我们看到对于加工2父图和子图是平衡的,所以,本题只能是2.12.2或者他们和文件之间缺少数据流。

只得根据需求描述去分析到底缺失哪些数据流。

 

根据在原需求中的


我们可以很轻松的判断出缺少哪些数据流,如下图红色箭头



对于问题3:这是一个数据字典的应用问题。



根据以上我们截取需求中的信息,,注意红色部分,再结合我们开始介绍的数据字典定义符号的使用,即可很轻松解决这个问题。

管理工作请求单=[购入新书|读者借书|读者还书|图书注销]

入库单=分类目录号+书名+作者+价格+数量+购书日期。



<think>我们之前已经提供了TCRT5000模块的详细原理和PCB设计要点。现在用户的问题是:如何看懂电路原理并根据片绘制电路板?这需要从电路基本知识和PCB设计流程两方面解答。 ### 一、看懂电路原理的关键步骤(以TCRT5000为例) #### 1. **识别核心器件** - **TCRT5000**:红外反射传感器,包含红外发射管和接收管 - **LM393**:电压比较器(双路开漏输出) - 电阻、电容、电位器等外围元件 #### 2. **划分功能模块** ```mermaid graph LR A[电源电路] --> B[红外发射] A --> C[红外接收] C --> D[比较器电路] D --> E[输出指示] ``` #### 3. **电流路径分析** - **发射回路**: $$I_{IR} = \frac{V_{CC} - V_F}{R1} \approx \frac{5V - 1.2V}{100Ω} = 38mA$$ (实际需按数据手册调整,推荐15-20mA) - **接收回路**: $$V_A = V_{CC} - I_{photo} \times R3$$ 光照越强,$I_{photo}$越大,$V_A$越低 #### 4. **信号转换原理** - 比较器正输入端电压: $$V_+ = V_{ref} = V_{CC} \times \frac{R_{pot\_lower}}{R4 + R_{pot}}$$ - 当 $V_A < V_{ref}$ 时,DOUT输出低电平(检测到反射物) ### 二、根据原理绘制PCB的流程 #### 步骤1:创建元件库 - 绘制TCRT5000封装(重点注意光学结构): ```plaintext 俯视: ┌───────┐ │ ○ ○ │ ← 发射管引脚(2.54mm间距) │ │ │ ○ ○ │ ← 接收管引脚 └───────┘ 尺寸要求:发射/接收管中心距=4.5±0.1mm ``` #### 步骤2:布局规划 | 区域 | 元件 | 间距要求 | |-------------|-------------------------|------------------| | 板边 | TCRT5000 | 距板边≥3mm | | 传感器后方 | 电阻、电容 | 紧邻比较器 | | 输出端 | LED、排针 | 方便观测 | #### 步骤3:布线规则设置 - 电源线:0.5mm线宽(1oz铜厚载流1A) - 信号线:0.3mm线宽 - 临界路径: - 接收管输出到比较器输入 ≤15mm - 比较器输出到排针加粗至0.4mm #### 步骤4:抗干扰设计 ```plaintext TCRT5000接收管区域: ┌───────────────────┐ │ GND填充区 │ │ ┌─┬─┬─┐ │ │ │ │R3│ │ │ ← 接收信号线 │ └─┴▲┴─┘ │ │ │A点 │ │ ────╫══════════▶比较器 │ ║ 包地走线 │ └───────────────────┘ ``` ### 三、设计验证要点 1. **光学测试**: - 在白纸/黑线上移动模块,用示波器观测: - TP1(A点)电压变化范围 - DOUT跳变沿陡峭度 2. **环境光干扰测试**: - 在500lux照度下,调节电位器直至: $$ \Delta V = V_{white} - V_{black} > 0.8V $$ (信噪比≥3:1) ### 四、常见问题解决 - **问题**:检测距离不稳定 **对策**: 1. 检查发射管电流:$I_F = \frac{V_{R1}}{R1}$ 2. 在接收管并联220pF电容滤波[^3] - **问题**:比较器输出振荡 **对策**: 1. 增加正反馈电阻(10MΩ)形成迟滞 $$ V_{hys} = \frac{R_{fb}}{R_4} \times (V_{OH} - V_{OL}) $$ ### 相关问题 1. 如何计算TCRT5000的最佳检测距离与发射管电流的关系? 2. 在双层PCB设计中,如何布置地平面才能有效减少红外传感器的干扰? 3. LM393比较器未使用的引脚应该如何处理? 4. 当需要同时使用8路TCRT5000时,电源电路应如何设计? > **关键提示**: > 看懂电路的核心是掌握电流路径和信号转换关系[^1],而PCB设计则需重点关注信号完整性和电磁兼容性。对于红外传感器,光学布局的精度直接决定性能表现。</think>### 如何看懂电路原理并绘制PCB板(基于TCRT5000示例) #### 一、看懂电路原理的5个关键步骤 1. **识别核心器件** - 在TCRT5000原理中: - 红外发射管:标注IR+/-的元件 - 光电接收管:标注C/A的元件 - LM393:电压比较器芯片 - 电位器:带调节箭头的电阻符号 2. **理解电流路径** ```mermaid graph LR A[电源VCC] --> B[发射管限流电阻R1] B --> C[红外发射管] A --> D[接收管上拉电阻R3] D --> E[光电接收管] E --> F[比较器输入] ``` 3. **分析信号流向** - 红外反射信号路径: $$ \text{反射光} → \text{接收管电流} → V_A \text{电压} → \text{比较器} → \text{DOUT数字输出} $$ 4. **掌握关键参数**(以TCRT5000为例): | 参数点 | 测试条件 | 典型值 | 计算公式 | |--------------|-------------|------------|----------------------| | 发射管电流 | Vcc=5V | 15-20mA | $I_F = \frac{V_{CC}-V_F}{R1}$ | | 接收管输出电压 | 白纸反射 | 0.3-0.8V | $V_A = V_{CC} - I_{photo} \times R3$ | | 比较阈值 | 电位器中点 | 2.5V | $V_{ref} = V_{CC} \times \frac{R_{pot}}{R4+R_{pot}}$ | 5. **识别功能模块** - 电源滤波:电容C1并联在VCC-GND - 信号调理:R3和接收管组成IV转换 - 阈值调节:电位器分压网络 - 输出指示:LED与限流电阻R5 #### 二、根据原理绘制PCB的流程 ```mermaid flowchart TD A[原理分析] --> B[创建元件库] B --> C[PCB布局规划] C --> D[关键走线设计] D --> E[设计验证] ``` 1. **元件库创建要点** - TCRT5000封装要求: - 发射/接收管中心距:4.5±0.1mm - 引脚间距:2.54mm标准排针 - 电位器:选用THT(通孔)封装便于调节 2. **PCB布局黄金法则** ```plaintext ┌───────────────────┐ │ 传感器区域 │ ← 距板边≥3mm │ ┌─┬─┐ │ │ │● ●│ TCRT5000 │ ← 红外窗口 │ └─┴─┘ │ │ │ │ 高速信号区 │ │ ┌───────┐ │ │ │ LM393 │ │ ← 距离传感器<10mm │ └───────┘ │ │ │ │ 调节/输出区 │ │ [电位器] [LED] │ └───────────────────┘ ``` 3. **关键走线规范** | 信号类型 | 线宽 | 处理方式 | |---------------|---------|--------------------------| | 接收管输出(A) | 0.3mm | 包地处理,两侧走GND线 | | 比较器输入 | 短于15mm| 避免与数字信号平行 | | VCC供电 | 0.5mm | 星型拓扑,加10μF+100nF电容| 4. **抗干扰设计** - 接收管周围做Guard Ring(保护环): ```plaintext ┌─────────┐ │ GND │ │ ┌───┐ │ │ │ A ├─→信号线 │ └───┘ │ └─────────┘ ``` - 比较器未用输入端接地[^3] #### 三、设计验证方法 1. **仿真验证**(使用LTspice等工具): ```plaintext .step param surface 0 1 ; 模拟黑白表面 V1 A 0 PULSE(0 3.3 0 1u) ; 模拟反射信号 .tran 0 10m 0 1u ; 瞬态分析 ``` 2. **实物测试点**: | 测试点 | 正常范围 | 异常处理 | |-------|-------------|-----------------------| | TP1 | 0.3-4.5V | 检查R3阻值和接收管 | | TP2 | 可调0.5-4.8V| 检查电位器连接 | | DOUT | 0V/3.3V跳变 | 调节电位器或检查比较器 | #### 四、常见设计问题解决 1. **检测距离短** - 解决方案:减小R1提升发射管电流 $$ R1 = \frac{V_{CC} - 1.2V}{20mA} \quad (\text{5V系统取} 190Ω) $$ 2. **环境光干扰** - 加装遮光罩(推荐黑色ABS材料) - 接收管并联100pF电容滤波 3. **输出信号抖动** - 在比较器输出端加0.1μF电容 - 增加正反馈电阻(1MΩ)形成迟滞 > **专业提示**: > 原理中的每个符号都对应物理器件的电气特性[^1],设计PCB时必须考虑: > 1. 高频信号回流路径最短原则 > 2. 敏感模拟电路与数字电路隔离 > 3. 大电流路径避免形成环路 ### 相关问题 1. 如何计算红外接收管的最佳负载电阻值? 2. 在双层PCB设计中,地平面分割有哪些注意事项? 3. 如何用示波器诊断TCRT5000的信号干扰问题? 4. 当需要扩展多路传感器时,电源设计有哪些优化方案? 5. 表面贴装(SMD)与通孔元件(THT)在PCB布局中有何不同考量? [^1]: 理解原理需要掌握元件符号与真实器件的对应关系,这是电子设计的工程语言基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值