通过VHDL监视相同的PIN码设置PIN值

时间:2014-04-09 05:44:05

标签: vhdl

在监视同一个引脚中的值后,是否可以将输入引脚设置为特定值。如果我们有一个输入信号,那么如果该信号上的值为1,那么在执行特定操作后我们可以设置该引脚的值在vhdl中为零。

2 个答案:

答案 0 :(得分:0)

你所描述的内容并没有多大意义。您确定正确理解要求吗?

您的load信号听起来像一个外部控制信号,是您模块的输入。您不应该尝试更改该信号的值 - 无论谁控制您的模块都应该这样做。

只要load信号被置位(1),您可能应该使用可能在不同输入信号上提供的任何值加载移位寄存器(例如,{{1} })。当外部逻辑将parallel_data信号置为无效(load)时,您应该开始将每个时钟周期的一位加载数据移出到输出信号(例如,0

请注意,不需要双向信号!

这完全基于我认为移位寄存器的典型行为,并且可能与您想要实现的内容相匹配。

答案 1 :(得分:0)

这听起来不是一个好的计划,我不完全确定你想要这样做,但我想如果你可以这样设置:

  • 你有一个电阻将电线拉到地上。
  • 您的外部设备将电线拉高
  • FPGA捕获引脚变高,然后将其驱动为高电平
  • 一旦看到引脚变高,外部源会变为三态
  • 然后FPGA可以设置引脚三态,当它想要标记它已经完成(或者其他),并且电阻将它再次拉低
  • 重复

我认为这样做的一个用途是外部设备触发一些处理,FPGA用于指示何时完成,在这种情况下,FPGA代码可能是这样的:

pin_name <= '1' when fpga_is_processing = '1' else 'Z';
start_processing <= '1' when pin_name = '1' and pin_name_last = '0';
pin_name_last <= pin_name when rising_edge(clk); 

start processing将在pin_name信号的上升沿产生单个时钟脉冲。 fpga_is_processing将是处理块的输出,在外部设备停止将引脚驱动为高电平之前必须“返回”。

可能想要对pin_name信号上的边缘检测器进行“去噪”,以减少外部故障触发处理的可能性。有各种方法可以实现这一目标。