使用两个与非门构成一个SR锁存器,会有一个警告:combinational loop

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Sife_4596736
Level 2
Level 2
10 replies posted 5 replies posted First question asked

使用两个与非门构成一个SR锁存器,会有一个警告:The design contains a combinational loop, check the design for unintentional latches 。Breaking the loop at ....--->.......微信图片_20191213154452.png微信图片_20191213154433.png该怎么解决这个warming呢?

0 点赞
1 解答
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

你要把SR锁存器的clock 至少设置在12MHz。

因为UN的信号频率是cpu 的clock的一半。

附件我放了一个工程,用CY8CKIT-042 测试之后是可以有信号在pin上面测到的。

在原帖中查看解决方案

0 点赞
19 回复数
Roy_Liu
Moderator
Moderator
Moderator
5 comments on KBA First comment on KBA 10 questions asked

参考一下 https://www.cypress.com/file/179061/download "4.4 Topic #4: Don’t Make Latches" 一节(从19页开始),最好用Creator 自带的SRFF 或DFF component.

Roy Liu
0 点赞
Sife_4596736
Level 2
Level 2
10 replies posted 5 replies posted First question asked

我使用SRFF会出现异步

1.怎么修改这个异步呢

2.如果使用DFF,该怎么改成锁存器latch

pastedImage_0.png

0 点赞
Roy_Liu
Moderator
Moderator
Moderator
5 comments on KBA First comment on KBA 10 questions asked

建议你读一下 https://www.cypress.com/file/179061/download​  针对异步问题 参考23页的 4.7 Topic #7: Interface with Fixed Blocks

用PSoC做数字相关的设计,可以进一步参考这个文档中最后提到的Related Application Notes

Roy Liu
0 点赞
Sife_4596736
Level 2
Level 2
10 replies posted 5 replies posted First question asked

很感谢你的回复,对我帮助很大

最后一个问题:

我发现我的计数器存在问题

我想要的效果为,

1.有一个脉冲信号进入计数器,作为开始计数标志(可以用上升或下降沿触发,我使用的引脚为start还是reload)

2.检测到这个上升或下降沿后,时钟clock开始计数(我使用的是down向下计数(向上计数也可以),un最后会有一个溢出信号,配置一个字节8位所以period等于8?)

3.然后检测到下一个start或reload引脚的脉冲后才会下一次计数。所以un处的波形其实是输入波形的一个字节后的延迟

问题:

1.我使用的组件正确吗?我选择了time counter(counter? time counter? time counter pwm?)?

2.我的配置正确吗?

3.clock的输入必须是一个clock block吗?我尝试连接我之前与输入波形同步的clock信号,会提示错误,必须连接一个外部时钟clock才不会报错

4.关于un输出的波形是否和我描述的一样,是输入波形的一个延迟?

pastedImage_0.png

0 点赞
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

问题:

1.我使用的组件正确吗?我选择了time counter(counter? time counter? time counter pwm?)?

正确,Timer counter。

2.我的配置正确吗?

配置正确。

3.clock的输入必须是一个clock block吗?我尝试连接我之前与输入波形同步的clock信号,会提示错误,必须连接一个外部时钟clock才不会报错

不清楚你具体是怎么配置的,我在之前的回复中那样搭建系统可以接受吗?

4.关于un输出的波形是否和我描述的一样,是输入波形的一个延迟?

你的输入波形是什么? 不能理解你这个问题。

underflow (最快最直接的方式是你用示波器测试一下)

When this output goes high, it indicates that a counter underflow has occurred. Not applicable to PWM in
pseudo random mode.
An underflow event indicates that in a down counting mode the COUNTER has changed from a state
where it equaled “0”, to a state where it does not equal “0”.

Timer Counter 结合组建的datasheet和示波器测试一下,你就可以解决问题了。

0 点赞

1.之前回复中的搭建系统方法帮我解决了warming异步的问题,十分感谢。

2.我一直在调试time counter的配置参数,但始终没有出现我想要的波形。

pastedImage_0.png

我始终没能获得溢出信号,为什么,会被什么影响了呢?

0 点赞
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

我不清楚你用的是那一颗芯片,正常情况下UN的信号是不可能route到GPIO的,因为这个地方没有DSI资源来连接数字信号,另外这个信号也只有2 个clock的宽度。

0 点赞

1.我用的芯片是cy8c4245AXI-483

2.如果无法route到GPIO也能接受,因为,我会把之前的输入信号和这个UN输出的信号用SRFF最后输出才得出我想要的波形(或者说SRFF输出q也无法route到GPIO?)

3.根据第二点,其实我最后经过SRFF后的波形才是我想要的,UN两个clock的宽度也没事,对于UN我想要的只是一个电平的跳变(根据本帖上方有一张图片可以看到,PIN_1脚上的波形才是我真正想要的,是前面两个波形经过SRFF后产生的)

4.但我把PIN_1 route到GPIO也看不到我想要的波形,所以我怀疑是我的计数器出现了问题,有什么解决办法吗

0 点赞

好像SRFF的输出q也不能用GPIO来看波形诶,那我该怎么办来验证我的工程的正确性呢,

0 点赞
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

UN的输出时间是: 2/FCPU (FCPU 是CPU的工作时钟频率)

所以之前给的工程,用1K去同步24M/2 是不对的。你为什么一定要用srff ?

0 点赞

我想要达到的目的是把一个一位长度的低电平信号延长成27个字节长度的低电平信号

所以我用了一个计数器,输入这个一位的低电平信号,计数27个字节,然后输出溢出信号

用SR锁存器锁存这个一位的低电平信号和计数器产生的溢出信号后之后,就能产生我想要的一个延长的低电平信号

我要用这个信号作为SPI片选,前面一位长度的信号当不了片选(长度不够)

0 点赞
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

你要把SR锁存器的clock 至少设置在12MHz。

因为UN的信号频率是cpu 的clock的一半。

附件我放了一个工程,用CY8CKIT-042 测试之后是可以有信号在pin上面测到的。

0 点赞

pastedImage_0.png

你好,

之前的解答对我帮助很大,非常感谢

现在我想问一下:

PWM能不能将3/4bit 改成1/2bit?

0 点赞

我已经把line_n修改成现在这个波形形状了(修改了PWM align和compare),但输出的波形占空比还是有不是50%的情况出现,为什么?pastedImage_0.png

pastedImage_1.png

0 点赞
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

一个问题结束以后,麻烦mark一下正确答案,重新开新的forum问新的问题。

0 点赞

好的

0 点赞
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

1: SR寄存器是由两个与非门组成的,但是关于为什么不建议自己搭建,在之前回复的文档  page19 页已经给了非常详细的解释。https://www.cypress.com/file/179061/download

2: 对于你直接使用SRFF出现的时间同步的问题,在这个文档的23页也给出了解释。

3: 建议你可以按照下面的图进行分析,看这样的数字逻辑是不是你想要的:

pastedImage_2.png

4: Hope it can be helpful for you !

0 点赞

很感谢你的回复,对我帮助很大

最后一个问题:

我发现我的计数器存在问题

我想要的效果为,

1.有一个脉冲信号进入计数器,作为开始计数标志(可以用上升或下降沿触发,我使用的引脚为start还是reload)

2.检测到这个上升或下降沿后,时钟clock开始计数(我使用的是down向下计数(向上计数也可以),un最后会有一个溢出信号,配置一个字节8位所以period等于8?)

3.然后检测到下一个start或reload引脚的脉冲后才会下一次计数。所以un处的波形其实是输入波形的一个字节后的延迟

问题:

1.我使用的组件正确吗?我选择了time counter(counter? time counter? time counter pwm?)?

2.我的配置正确吗?

3.clock的输入必须是一个clock block吗?我尝试连接我之前与输入波形同步的clock信号,会提示错误,必须连接一个外部时钟clock才不会报错

4.关于un输出的波形是否和我描述的一样,是输入波形的一个延迟?

pastedImage_0.png

0 点赞
Sife_4596736
Level 2
Level 2
10 replies posted 5 replies posted First question asked

你好,

我现在使用SRFF 然后输出q连到GPIO 上面,但是我的逻辑分析仪却检测不到这个引脚,是SRFF的输出q无法route到GPIO吗?(我使用DFF后能检测到同一引脚的波形,有波形出现)

0 点赞