【发布时间】:2017-12-28 10:32:00
【问题描述】:
我想编写一个 c 代码来生成一个脉冲,但我似乎无法围绕逻辑来实现它。我来自强大的 Verilog 背景并且知道如何在 verilog 中执行此操作(使用 xor 查找状态变化并使用该脉冲,如果需要,通过多次注册它随着时间的推移拉伸它)
我应该如何在 C 中做到这一点?我想做类似的事情
while(1)
{
switch(state)
case 0: // generate single pulse
case 1: // dont generate
case 2: // dont gererate
case 3: // generate single pulse
usleep(1000) // I want a 1ms pulse
}
状态由运行在 FPGA 上的代码修改,因此它会根据某些逻辑而改变。
似乎无法做到这一点。一些指导将不胜感激
【问题讨论】:
-
"pulse" 是什么意思?什么样的“脉冲”。想要脉搏什么?
-
您可以在一个循环中切换为高电平,然后在下一个循环中切换为低电平,例如通过使用状态 4“脉冲”。
-
单脉冲作为默认低电平的信号,但当某些情况发生时,高电平和低电平时间 = 说 1 毫秒
-
@Yunnosch 我尝试了类似“if(signal=0) signal =1; else signal = 0”的方法,但只要该状态稳定,就会产生多个脉冲
-
您需要提供更多上下文。使用您显示的代码,“进入操作”之类的东西是不可能的。请尝试提供更接近minimal reproducible example 的内容。朝着合适的强大状态机迈出的一步是维护一个“statebefore”变量。