献给初学者的时序图D触发器74hc595等的精彩问答.docx
《献给初学者的时序图D触发器74hc595等的精彩问答.docx》由会员分享,可在线阅读,更多相关《献给初学者的时序图D触发器74hc595等的精彩问答.docx(48页珍藏版)》请在冰豆网上搜索。
献给初学者的时序图D触发器74hc595等的精彩问答
消息记录
消息分组:
大学组
消息对象:
陈博士
日期:
2010-8-26
我
12:
56:
54
清空移位寄存器,并行输出为高阻状态
并行输出为高阻状态 是什么意思
陈博士
14:
00:
30
在吗
我
14:
00:
36
在
陈博士
14:
00:
50
问题搞清楚了吗
我
14:
00:
54
没有
陈博士
14:
01:
40
电信号接口粗略的可以划分为三种状态,0 1 高阻
陈博士
14:
01:
53
高阻用 Z表示
陈博士
14:
02:
36
高阻可以认为是 断路
我
14:
03:
03
我
14:
03:
12
你看看这个芯片的资料
我
14:
03:
24
他说的那个高阻状态是怎么产生的
我
14:
03:
33
是芯片内部中断?
陈博士
14:
04:
19
具体到芯片的话 只需要把OE置无效 就输出高阻了
我
14:
04:
51
输出高阻有什么用
陈博士
14:
05:
20
其实主要是在总线设计中应用比较多
陈博士
14:
05:
36
比如pci isa usb中
我
14:
05:
40
陈博士
14:
06:
02
总线中一般要挂很多个设备
我
14:
06:
03
1
这边是输出端吧
陈博士
14:
07:
37
应该是
我
14:
07:
54
输出端高阻,让出总线是什么意思
我
14:
08:
18
这边有总线吗
我
14:
08:
44
这个电路里哪地方时总线
我
14:
09:
01
是DS还是 15,1,2,3,4,5。
。
6这几个
陈博士
14:
09:
27
这个是串并转换芯片吧
我
14:
09:
46
是的
陈博士
14:
10:
42
从这个电路的设计上来说 74hc595 并不能输出高阻状态
陈博士
14:
10:
56
只能输出0 和 1
我
14:
11:
08
你有没有输出高阻状态的资料
我
14:
11:
12
电路
陈博士
14:
11:
42
没有 我给你画个示意图吧
我
14:
12:
17
一会你看看这里边的程序,好像牵涉到时序
陈博士
14:
18:
06
14:
18:
12
14:
18:
12
成功发送文件“03 74HC595串入并出芯片应用.rar”(30.00KB)。
陈博士
14:
18:
28
三态一般都是这样的连接
我
14:
18:
48
如果是刚才那个芯片的话,高阻状态是什么样子
陈博士
14:
18:
49
左边可以看做是三个输入
陈博士
14:
19:
23
刚才那个芯片输出高阻的话 需要把oe置成高电平
陈博士
14:
19:
49
不过那个电路已经把oe接地了 所以不可能输出高阻了
我
14:
19:
56
奥
我
14:
20:
18
如果有两个那样的芯片接到总线上,高阻才有意义是吧?
陈博士
14:
20:
56
一般来说是这样的
陈博士
14:
21:
23
如果只有一个芯片设计成高阻也有点意义
我
14:
21:
43
什么意义
陈博士
14:
21:
59
高阻也就是说 不输出电平 就像把闸刀断开一样
陈博士
14:
22:
17
可能有时候特殊情况需要这样的输出
我
14:
22:
34
稍微知道了点了
我
14:
22:
40
看刚才那个程序
我
14:
23:
01
void In_595()
{
uchar i;
for(i=0;i<8;i++)
{
temp <<= 1;
DS = CY;
SH_CP = 0;
_nop_();
_nop_();
SH_CP = 1;
}
}
void Out_595()
{
ST_CP = 0;
_nop_();
ST_CP = 1;
_nop_();
ST_CP = 0;
}
陈博士
14:
23:
06
o
我
14:
23:
42
SH_CP=0
SH_CP=1
我感觉应该是根据那个
功能表得出来的吧
陈博士
14:
25:
40
sh_cp是时钟输入吧
陈博士
14:
25:
58
上升沿有效 应该是从功能表过来的
我
14:
26:
27
是时钟输入
我
14:
26:
36
移位寄存器的时钟输入
陈博士
14:
26:
53
对 是595的时钟
我
14:
27:
07
那个存储时钟和这个有什么区别
陈博士
14:
27:
39
哪个存储时钟啊
我
14:
27:
59
陈博士
14:
29:
50
存储时钟 就是输出时钟
陈博士
14:
30:
15
sh的上升沿 把数据锁入到 595中
陈博士
14:
30:
37
st的上升沿 把595的数据 输出到8位并行口上
陈博士
14:
31:
09
你自己能理解就行了 也不一定把它叫做时钟
我
14:
31:
28
通过这个function能看出来什么时候输入什么时候输出不能
我
14:
31:
39
陈博士
14:
32:
20
能啊 这个表的描述很清楚 呵呵
陈博士
14:
32:
45
陈博士
14:
32:
56
看这个吧 比较专业点
陈博士
14:
33:
35
是不是明白了啊
我
14:
33:
53
把数据锁入到 595对应哪一行
陈博士
14:
34:
31
void In_595()
{
uchar i;
for(i=0;i<8;i++)
{
temp <<= 1;
DS = CY;
SH_CP = 0;
_nop_();
_nop_();
SH_CP = 1;
}
}
陈博士
14:
34:
47
这个是把数据串行输入到595
我
14:
34:
49
对应那个表中的哪一行
陈博士
14:
35:
24
你看到 FUNCTION TABLE了吗
我
14:
35:
31
看到了
陈博士
14:
36:
10
第4和第6行是说数据串行输入到595的时序
陈博士
14:
36:
38
第5和第6行是说从595输出到数码管的时序
陈博士
14:
37:
16
parallel output stage
我
14:
37:
23
第6行对应两个?
陈博士
14:
38:
25
第6行是输入端进数 同时 输出端出数
陈博士
14:
39:
09
但是输出端的数据不包括输入端的当前数据
陈博士
14:
39:
21
这点可能有点拗口
我
14:
39:
38
怎么取这两种数据
陈博士
14:
39:
39
我说的最后一句话 你可以先不理解 也不影响使用芯片
我
14:
39:
41
区分
陈博士
14:
40:
27
区分哪两种数据啊
陈博士
14:
40:
32
输入和输出吗
我
14:
40:
36
恩
陈博士
14:
41:
43
输入和输出还用区分吗
陈博士
14:
41:
59
都不在一个端口上
陈博士
14:
42:
38
不理解你想怎么区分
我
14:
43:
02
DS是输入数据用的吧
我
14:
44:
28
串转并从这输入,从另一边的8条线输出
我
14:
44:
49
那是不是还可以读到那边的8条线状态呢
陈博士
14:
54:
53
可以读8条线的状态
陈博士
14:
56:
32
你想明白了吗 呵呵
陈博士
14:
56:
51
找本数字电路的书再复习一遍吧 呵呵
我
14:
57:
02
读出的时候应该也和那个功能表有关系吧
陈博士
14:
57:
15
有关系
我
14:
57:
25
和第几个有关系呢
陈博士
14:
57:
28
st
我
14:
58:
24
第几行呢
陈博士
14:
59:
09
我给你发的那个文件中的fig.5能看懂吗
陈博士
14:
59:
22
你要是能把这个图看懂 就不用看表格了
陈博士
14:
59:
25
呵呵
陈博士
15:
00:
34
从 Q7'中都出的数据和ds的输入数据保持同步,也就是说这两根线上的数据始终相同
我
15:
01:
02
也就是说随时都可以取数据?
陈博士
15:
01:
12
嗯 可以这么理解
我
15:
02:
21
这个还需要移位寄存器一个一个读出吧
陈博士
15:
02:
35
读取数据和功能表中的第五和第六行有关系
我
15:
03:
44
好,我再看看
我
15:
04:
46
对哪个fig.5不是很明白,不过至少得先会使用Function表。
陈博士
15:
05:
06
嗯 先把表看明白了吧
陈博士
15:
05:
22
熟悉几个器件后 就好了
我
15:
05:
44
这个器件你以前用过没
陈博士
15:
05:
46
各种器件都差不多 无非就是把时序组合变一下
陈博士
15:
05:
55
没用过
我
15:
06:
11
不错啊,已经能学以致用了
陈博士
15:
06:
35
我靠 这也叫致用啊
陈博士
15:
07:
04
等你用过几个器件后 就知道这是多么简单的事情了
陈博士
15:
14:
16
那个Q7'引脚 是sh上升沿以后才有效
我
15:
14:
49
程序不对?
陈博士
15:
14:
53
从fig.6可以看出来 经过了一级触发器
陈博士
15:
14:
57
程序没问题
陈博士
15:
15:
14
你现在也没用Q7'这个管脚吧
陈博士
15:
15:
28
我是说探讨一下芯片的工作原理
我
15:
16:
16
没有用
陈博士
15:
16:
18
你看看fig.6 ds 到 Q7' 这条路径 经过了两个触发器
陈博士
15:
16:
37
这两个触发器都是用sh作为时钟出发的
陈博士
15:
16:
44
触发的
陈博士
15:
17:
16
也就是Q7'的数据要比DS的数据晚一个stage
我
15:
17:
42
你看看fig.6 ds 到 Q7' 这条路径 经过了两个触发器
陈博士
15:
17:
45
具体可以找一个触发器的工作原理参考一下
我
15:
17:
50
你怎么看出是2个触发器的
陈博士
15:
18:
07
ff0 ff7都是触发器
陈博士
15:
18:
23
latch是锁存器
我
15:
18:
25
ff0,ff7?
我
15:
18:
34
figure6里没有啊
陈博士
15:
18:
57
FF0
陈博士
15:
19:
02
没有嘛
陈博士
15:
19:
06
FF7
我
15:
19:
33
我
15:
19:
36
是这个图吗
陈博士
15:
19:
39
你看看和Q7'相连的那个东西是什么
陈博士
15:
20:
24
我刚才说的好像还有问题 是经过7个stage
陈博士
15:
20:
26
哈哈
陈博士
15:
20:
32
陈博士
15:
20:
40
看这个里面的fig.6
陈博士
15:
20:
57
FF0上面标示的是 stage0
我
15:
21:
06
陈博士
15:
21:
08
FF7上面标示的是 stage7
我
15:
21:
11
这个图吧
陈博士
15:
21:
31
嗯 是这个图
我
15:
22:
05
就是为啥Q7和Q1到Q6不一样恩
我
15:
22:
06
呢
陈博士
15:
23:
15
Q0~Q7是一样的,Q7'单独考虑
我
15:
23:
43
Q7'你估计是干什么用的
陈博士
15:
23:
57
串行输出啊 呵呵
陈博士
15:
24:
23
可以做时延用
陈博士
15:
25:
07
ds 到 q7' 有8个stage的延时
我
15:
25:
53
我先看看触发器的原理,大学时这块都没学好
陈博士
15:
26:
15
嗯 触发器和锁存器是 数字电路的基础
我
15:
26:
40
能具体点,这个触发器是什么类型的触发器
陈博士
15:
26:
55
内部结构 不一定要钻研很深 只把工作原理看懂就行了
陈博士
15:
27:
03
你就找D触发器看吧
陈博士
15:
27:
11
这个就是一个典型的D触发器
我
15:
27:
20
好
我
15:
28:
21
我先看看
陈博士
15:
28:
34
行 有问题再讨论吧
我
16:
12:
57
我
16:
14:
38
那个latch应该也有个这样的表吧
陈博士
16:
14:
55
应该是有
我
16:
16:
55
我
16:
17:
05
这两种都是非门,有什么区别
陈博士
16:
17:
17
没区别吧
陈博士
16:
17:
28
我觉得就是画法不一样
陈博士
16:
17:
52
逻辑上没啥区别
我
16:
23:
17
你再说一下中午说的那个Q7'与DS的关系吧
我
16:
24:
11
CP上升沿时FF0到FF7 D和Q是一样的?
我
16:
25:
15
STAGES1 to 6这个是什么东西
陈博士
16:
50:
17
ds到q7' 经过了8个触发器,你琢磨一下吧
我
16:
52:
32
那个R是什么,我在网上找的怎么就没这个脚呢
陈博士
16:
52:
58
哪个r啊
陈博士
16:
53:
07
d触发器上的吗
我
16:
53:
08
我
16:
53:
10
是
陈博士
16:
53:
39
r是reset的意思
陈博士
16:
53:
51
有的触发器上还有s
陈博士
16:
53:
57
s是set的意思
我
16:
53:
59
奥
我
16:
54:
09
那我说下我现在的理解吧
我
16:
54:
49
CP上升时,D 1 Q 1; D 0 Q 0;
我
16:
55:
14
这个时候这个D端是和DS一样的。
我
16:
56:
35
不知道那个STAGES1 to 6是什么东西
陈博士
16:
56:
54
就当成是6个触发器吧
陈博士
16:
57:
43
你现在可能有直观印象了 不过还可以再深入理解
我
16:
57:
58
那也就是上升沿的时候FF7右边的Q和DS是一样了
陈博士
16:
58:
53
不是一样的
我
16:
59:
16
为啥不一样
陈博士
17:
00:
02
你能不能理解这句话:
D的数据是CP上升沿之前DS的数据
我
17:
00:
32
好像能理解
我
17:
00:
58
那上升沿过程中的呢
陈博士
17:
01:
27
上升沿的时候 你可以简单理解为传递过程中
我
17:
02:
02
这个时候DS对D不影响是吧
陈博士
17:
02:
31
姑且认为不影响吧
我
17:
02:
59
我
17:
03:
15
这些Q1。
。
。
Q6和D有啥关系
陈博士
17:
03:
28
我再给你画个图吧 看来你对D触发器工作原理还没有完全理解
我
17:
03:
38
好
陈博士
17:
03:
59
q1 q6都和触发器有关系
陈博士
17:
04:
11
你可以认为是6个触发器并行工作
我
17:
05:
09
第一个上升沿前的数据放Q1,第二放Q2。
。
。
。
。
?
陈博士
17:
14:
25
陈博士
17:
14:
36
看这个图
陈博士
17:
15:
07
不好意思 画颠倒了
陈博士
17:
15:
09
陈博士
17:
15:
13
看这个吧
我
17:
15:
15
你给我发过来
我
17:
15:
21
速度太慢
我
17:
15:
38
看到了
17:
16:
08
17:
16:
08
成功接收文件
打开文件 打开所在文件夹
陈博士
17:
16:
39
下面的时序图是图d1 d2 d3的初始化
我
17:
16:
42
为啥D2,D3一直是0
陈博士
17:
17:
01
在第一个时钟周期假设其值依次为 1 0 0
我
17:
17:
23
奥
我
17:
17:
48
这个时候是上电状态是吧?
陈博士
17:
17:
58
对 你可以这么理解
我
17:
18:
12
然后需要Reset?
陈博士
17:
18:
23
reset先不考虑
陈博士
17:
18:
33
就考虑它的核心功能
陈博士
17:
18:
38
d q clk
陈博士
17:
19:
06
这个图我只画了一个时钟周期的数据
我
17:
19:
31
这个之后,d2,d3都应该为1了吧
陈博士
17:
19:
32
你考虑一下第二个时钟周期 d1 d2 d3的值是多少
陈博士
17:
20:
03
上升沿有效
我
17:
20:
30
奥
我
17:
20:
36
d2为1
我
17:
20:
41
d3继续为0
陈博士
17:
20:
41
我接着给你再画一个周期的数据 你看看和你想的一样不
陈博士
17:
20:
53
嗯 这次说对了
我
17:
20:
59
第三个上升沿时
d3才为1
陈博士
17:
21:
35
是的 现在能明白怎么传递数据了吗
我
17:
21:
39
知道了
我
17:
21:
52
是不是所有设备都是上升沿有效?
陈博士
17:
22:
10
也就是说前一个触发器要想把数据传递给下一个触发器 需要一个时钟周期的时间
陈博士
17:
22:
15
不是
陈博士
17:
22:
24
很多下降沿有效的设备
我
17:
22:
30
奥
陈博士
17:
22:
34
spi设备大部分都是下降沿
我
17:
22:
54
如果时钟频率太快的话呢
陈博士
17:
23:
05
太快就错了啊
陈博士
17:
23:
07
呵呵
我
17:
23:
23
我看例子里加NOP
我
17:
23:
27
是怎么回事
陈博士
17:
23:
29
这就可以解释为什么 说有的设备能跑多少兆了
陈博士
17:
23:
38
nop是空指令
我
17:
23:
42
是为了等时钟周期的吧
陈博士
17:
23:
44
等待吧
陈博士
17:
23:
54
一般是为了等待设备
陈博士
17:
24:
10
怕指令太快了 设备还没来得及建立 保持
我
17:
24:
19
就是一个周期传送不了?
到下个周期的话,NOP?
陈博士
17:
24:
52
一个周期传送不了就废了
陈博士
17:
24:
58
没下个周期了 呵呵
陈博士
17:
25:
26
也就是说必须保证 在clk的两个上升沿之间把数据从d传到q
陈博士
17:
25:
39
否则就失败了
我
17:
25:
59
中间那么多设备它也能传过去?
陈博士
17:
26:
12
我只是说触发器
我
17:
26:
16
假如再串几个触发器的话
陈博士
17:
26:
28
我指的是单个触发器
我
17:
26:
39
奥
陈博士
17:
26:
45
触发器串联可以提高系统工作频率
陈博士
17:
27:
07
你要想理解这句话 估计还得再仔细琢磨琢磨
我
17:
27:
16
恩,为啥能提高?
陈博士
17:
28:
05
你可以想象一下流水线
陈博士
17:
28:
50
比如 只有一个人把砖头从火车站搬到郑大 他搬砖头的频率很慢
陈博士
17:
28:
57
因为路上要耗费很多时间
我
17:
29:
24
如果只有一个触发器能实现的东西,用多个触发器那不是变慢了吗?
陈博士
17:
29:
44
如果在火车站和郑大中间多加几个人 每个人运输一段距离 传送砖头的速度就快了
陈博士
17:
30:
13
我刚才这个例子中的人 就相当于触发器
陈博士
17:
30:
30
能理解了吗
我
17:
31:
19
不太理解,火车站到郑大是人必须跑这么远
电路这是一瞬间就到了啊
陈博士
17:
31:
38
你要想理解数字电路里的这个理论 还得去了解 setup; hold; path delay这些概念
陈博士
17:
32:
05
一瞬间是多少时间呢
陈博士
17:
32:
11
=0?
我
17:
32:
21
如果是纯粹导线的话,应该肯定比触发器快吧
陈博士
17:
32:
49
这个说不好
陈博士
17:
33:
00
所以就需要综合考虑了
陈博士
17:
33:
29
如果瓶颈在触发器的话 那就得想办法减少setup时间
我
17:
33:
53
什么时候需要用到多级触发器串联
陈博士
17:
33:
59
大部分设计中 都是线延时比较大
陈博士
17:
34:
48
我刚才举那个例子中就需要触发器串联
陈博士
17:
35:
22
如果传输路径短的话 就无所谓了
陈博士
17:
35:
29
可以考虑不用优化
我
17:
35:
47
哪些电路用多级串
我
17:
35:
51
一般
陈博士
17:
37:
03
一般的数字电路都需要串
陈博士
17:
37:
12
很少不使用这个方法的
陈博士
17:
37:
27
我说的是规模电路了
我
17:
37:
30
既然会导致延迟,那不是减慢速度了
陈博士
17:
37:
59
延迟和速度是完全不同的概念
陈博士
17:
38:
12
学计算机的时候学过流水线吧
陈博士
17:
38:
20
有延迟 但是 速度快
陈博士
17:
38:
58
有时候延迟对我们来说没啥影响 而速度却很关键
陈博士
17:
39:
21
延迟可能只是发生在加电的一瞬间
陈博士
17:
39:
36
而速度是在整个工作周期内都有的
我
17:
40:
17
我先想想
陈博士
17:
40:
18
呵呵 你这慢慢就成数字电路专家了啊
我
17:
40:
42
靠,还是你强啊,我们单位他们肯定不知道这
我
17:
40:
47
博士就是不一样啊
陈博士
17:
41:
08
和博士没啥关系 平时看点书就知道了
我
17:
41:
50
不是学单片机,我还真提不起兴趣学这个东西。
陈博士
17:
42:
03
多了解一点 没坏处
我
17:
42:
38
主要是书上太多了,不知道啥重要了,看完就忘
陈博士
17:
42:
44
其实你只要能把D触发器理解的透彻了 数字电路也就基本上没问题了
我
17:
43:
09
今天听你一讲比我上一年大学了
陈博士
17:
43:
18
陈博士
17:
43:
34
吹大了
我
17:
43:
48
真的,我学了一年数点还是啥也不会
我
17:
43:
53
电
陈博士
17:
44:
16
呵呵 我大学也没学会
陈博士
17:
44:
23
这也是后来学的
陈博士
17:
45:
05
不过你要是感兴趣 还可以再深入研究一点 现在说的这些也就是基础知识
我
17:
45:
27
好,肯定以后写单片机会遇到更深的
陈博士
17:
45:
50
单片机能遇到啥深的啊
我
17:
46:
10
难道这个已经