参考文献
有关文件及软件,请浏览:
//www.wsdof.com/雷电竞官网登录products/greenpak
下载我们的免费GreenPAK设计软件[1],打开。gp文件[2],并使用GreenPAK开发工具[3]在几分钟内将设计冻结到您自己的定制IC中。
雷竞技电竞平台Dialog Semiconductor提供了一个完整的应用笔记[4]库,包括设计示例以及Dialog IC内的功能和模块的说明。
- GreenPAK设计软件,软件下载和用户指南,Dialog Semiconductor雷竞技电竞平台
- AN-1113带键盘入口的安全门锁。gp,绿派克设计文件,Dialog半导体雷竞技电竞平台
- GreenPAK开发工具, GreenPAK开发工具网页,Dialog半导体雷竞技电竞平台
- GreenPAK应用笔记,绿派克应用笔记网页,对话半导体雷竞技电竞平台
- SLG46620对话框数据表,半导体雷竞技电竞平台
介绍
这个应用说明展示了如何设计一个门锁,打开与一个基本的安全代码。该项目使用了SLG46620V GreenPAK IC[5],一个4x4键盘,一个驱动器和直流电机。本项目分为三个阶段:
- 从4x4键盘接收数据
- 将安全代码与输入的数据进行比较
- 控制开锁,等待时间和重新上锁
系统视图
在这个设计中使用的键盘是一个4x4的键盘,有4行4列,键承载数字,符号和字母字母。用户按下的按钮关闭不同的开关。我们通过检查这些开关的状态来感知按钮的按下。
为了启动扫描过程,我们依次对每一行应用逻辑“1”,并检查来自列的信号,以了解哪个开关是用户关闭的。为了给这几行分别赋予逻辑“1”,我们使用了一个解码器。解码器是一种电路,它只有一个输出是有源的,这取决于它的输入状态。
因为只有一个输出是活动的,逻辑“1”不能同时应用于多行。这使得它接收到的数据是真实的。译码器设计为2x4,因为键盘有4条线。我们可以使用4个2位lut制作一个2x4解码器。解码器的LUT和真值表设置如图2所示:
|
|
|
|
输入 |
输出 |
||||
A1 |
A0 |
D3 |
D2 |
D1 |
D0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
使用两个计数器设置解码器的输入。这样,这些线就会被连续扫描。从解码器真值表中可以看出,输入1的变化时间是输入0的2倍。这就是为什么将CNT6计数器的输出周期设置为CNT5计数器输出周期的2倍。
计数器设置如图4所示。
|
|
在设置中,选择“LF OSC CLK”作为时钟。这将导致更大的输出周期,因为低频OSC CLK的频率很低。OSC/LF需要选择OSC电源模式为“Force power On”,才能使用LF OSC CLK。
计数器输出连接到DFFs的时钟,这样译码器的输入在这段时间内不会改变。这里的重点是在将计数器的输出连接到DFFs的时钟之前,对来自列的信号进行逆的逻辑与运算。这将确保在按下按钮时活动线路保持稳定。
当检测到按钮按下时,扫描功能停止,这进一步确保了结果数据的有效性。
当按下按钮时,由于机械和物理行为,按钮通常会产生多个打开/关闭过渡。这些转换可以被理解为在很短的时间内多次按压。为了防止这种情况发生,我们使用计时器在短时间内检查两次,以确保按钮确实被按下了。为了实现这一点,我们通过向来自列的信号添加延迟来创建一个反反弹函数,并使用原始信号对该信号执行逻辑与操作。我们将CNT9 / DLY9设置为模式延迟,配置设置如图5所示。
每个按钮按下将产生的信号,被用作CLK的检测电路的安全代码。我们在这个项目中选择的数字是1-5-9的顺序。为了理解与这些数字相关联的列的信号,将相关的行和列的信号相乘。所以:
- 第一行是1号
- 第二列,第五行
- 9的第三列和第三行是乘法。
密码控制单元
在前一节中,我们检查了用户输入的信号。在本节中,我们设计了一个电路,与所输入的按键数据进行比较,以满足所需的安全密码。输入的按钮数据必须以正确的顺序输入,以匹配3位安全密码。利用有限状态机宏单元可以设计出实现此功能的电路。
状态机是一个用于设计计算机程序或数字逻辑的概念。前者由有限数量的状态、转换和动作组成,可以用流程图建模,在满足条件时可以检测逻辑路径。
这个电路使用了三种不同的状态。当任何按钮按下数据未输入或输入false时,状态变为“Idle state”。用正确的值输入第一个按钮后,状态机切换到“第一个数字状态”。如果输入的数字不是正确的第二个数字,状态机将自己再次切换到“空闲状态”。如果输入的数字是正确的,它会切换到“第二数字状态”。当状态机处于第二状态时,如果输入的数字不正确,状态机将再次切换回“Idle state”。如果输入正确,则密码控制单元输出为1。为了设计这个状态机,可以绘制一个状态图,如图6所示:
我们在设计中使用了2个DFF,因为我们使用的状态机有3个状态。2个DFF可用于4个不同的状态。然后通过使用这个图表,我们创建了一个状态表,如图7所示。
当前状态 |
输入 |
下一个状态 |
输出 |
||||
第一季度 |
Q0处 |
A2 |
A1 |
A0 |
第一季度 |
Q0处 |
正确的密码 |
0 |
0 |
X |
X |
0 |
0 |
0 |
0 |
0 |
0 |
X |
X |
1 |
0 |
1 |
0 |
0 |
1 |
X |
0 |
X |
0 |
0 |
0 |
0 |
1 |
X |
1 |
X |
1 |
0 |
0 |
1 |
0 |
0 |
X |
X |
0 |
0 |
0 |
1 |
0 |
1 |
X |
X |
0 |
0 |
1 |
在创建状态表时,首先写入输入和当前状态。根据当前状态的输入,然后写出相应的下一个状态。在下一状态下,根据当前状态和下一状态写入dff的输入。DFF的真值表如图8所示。
输入 |
下一个状态 |
|
nReset |
D |
问 |
0 |
X |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
如果DFF的输入值为1,则结果为1。如果给定0,它将是0。变化发生在CLK的上升边缘,DFF的输出保持不变,直到下一个逻辑变化通过时钟。
在形成状态表后,利用状态表和DFF的真值表,得到D1和D0的DFF的输入方程。这些方程如下:
D1 = a1 q1 ' q0 |
D0 = a0 q1 ' q0 ' |
正确密码= A2 Q1 Q0 ' |
在连接DFFs的输入端和时钟后,电路将如图9所示。
这里需要注意的一点是,密码控制电路在锁的开合时间内将保持在待机模式。我们可以通过将正确密码的信号与DFFs的nReset引脚连接来实现这一点。当DFF的nReset引脚为1时,DFF宏单元工作在正常模式,当nReset引脚为0时,DFF宏单元设置为复位模式,输出为0。当密码输入正确时,当“正确密码信号”为1时,密码控制电路进入待机模式。我们将正确的密码信号连接到一个DFF的时钟上,并将VDD信号连接到该DFF的输入上,以在防盗锁开-关时间保持正确的密码信号为1。这样,当正确的密码信号激活时,DFF输出为1。
最后,在打开-关闭过程结束后,锁定状态信号被发送到该DFF的nReset引脚,开始一个新的安全码比较周期。
安全锁电路
安全锁电路是激活的最后阶段(安全密码电路发出正确的密码信号),并控制驱动安全锁的驱动程序。这个电路有4个不同的阶段。这些都是:
- Idle状态-这是安全锁电路激活之前的初始状态。
- 开启状态-允许通过启动驱动器打开锁
- 等待状态-停止驱动程序,并保持锁打开一段时间。
- 关闭状态-允许通过倒车驱动程序关闭锁
安全门单元的状态图如图10所示。
与前面的图不同,这个图中状态的变化取决于时间周期,而不取决于输入。此外,州的移动有一定的顺序。防盗门单元状态表如下:
当前状态 |
下一个状态 |
||
第一季度 |
Q0处 |
第一季度 |
Q0处 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
根据这个表,我们可以写出DFFs的输入方程。
门状态DFF - 1 = K0 |
门状态DFF - 0 = K1 ' |
我们使用DLY1和DLY3设置安全锁的开-待-关时间。这些单元的设置如图12所示:
|
|
这里很重要的一点是将DFF输出与DLY电路的DFF IN引脚连接起来,DFF输出对应于开-关和待机状态。我们将K0和K1信号连接到DLY1的DLY IN引脚上,并使用逻辑和处理将该引脚设置为待机状态。这样,当状态机传递到' K1K0=11 '状态时,DLY1的pin为1,在延迟时间结束时,DLY1的输出为1,并向状态机发送一个信号传递到下一个状态。状态机传递到下一个状态后,DLY1被重置,因为DLY1的输入将为0。
同样的情况也适用于打开-关闭状态。由于启闭时间相同,使用1个DLY电路就足够了。我们通过逻辑异或处理将状态机的K1和K0信号连接到DLY3单元,并使用DLY3单元的dlyin引脚来安排开闭状态下的激活时间。当状态机为K1K0=01(打开)或K1K0=10(关闭)时,DLY3被激活,在指定的周期结束时,DLY3单元的输出被激活,并向状态机发送一个信号,以传递到下一个状态。这些信号通过逻辑或操作连接到状态机的CLK引脚。第一个触发状态机的信号是来自安全密码控制电路的正确密码信号。但是在将这个信号连接到状态机的时钟之前,我们应该先连接到PDLY块。将PDLY模块的模式设置为“Rising Edge Detector”后,通过对来自其他DLY模块的信号进行逻辑或运算,将PDLY输出连接到状态机的时钟上。
如果我们不使用PDLY块,逻辑或操作的结果会立即被设置为1,因为正确的密码信号是1。这种情况可以通过使用PDLY块来防止。当PDLY块捕捉到“上升边缘”时,它产生一次脉冲。这样,逻辑或运算的结果将不总是1,并且其他信号的变化会影响逻辑或运算的结果。
使用直流电机来开启和关闭安全锁。直流电机运行需要大电流和高电压,大于SLG46620V GreenPAK4设备所能提供的值。因此,一个单独的驱动电路,运行直流电机从系统中的另一个设备。该驱动器由来自SLG46620V的信号控制。如果我们将1和0相互发送到电机驱动器上的控制引脚,电机开始旋转。如果我们想改变电机的旋转,给电机驱动器的信号必须反转。0或1给两个引脚停止电机。在这个项目中,用于状态的dff是按照这个逻辑设置的。01开启状态,10关闭状态,11待机状态,00空闲状态。从状态机输出的信号可以直接连接到电机驱动器。 These signals can be connected in reverse for a second motor. After all connections are made, a security lock unit is shown in Fig. 13.
结论
在这个项目中,我们演示了如何完成一个由状态机描述的设计,并使用单个GreenPAK IC来实现它,此外,还考虑了驱动电机或执行器。指示器或其他功能也可以添加,因为在这个可编程混合信号IC中还有额外的电路可用。