VHDL中的简单标志[错误10820]
我想用VHDL设计一个IIC嗅探器,我在一个非常基本的点上挣扎 为了保持它的“连续性”,我想在实体执行的每个部分之后设置一个标志 现在我想在开始条件上设置一个标志(SCL=SDA上的高和上升沿) 当我按下复位按钮时,应在停止条件下(SCL=SDA上的高和下降沿)重置此标志 我现在的问题是,我无法通过START命令设置标志,并通过STOP命令重置标志 我应该如何获得这一时期的国旗VHDL中的简单标志[错误10820],vhdl,fpga,intel-fpga,Vhdl,Fpga,Intel Fpga,我想用VHDL设计一个IIC嗅探器,我在一个非常基本的点上挣扎 为了保持它的“连续性”,我想在实体执行的每个部分之后设置一个标志 现在我想在开始条件上设置一个标志(SCL=SDA上的高和上升沿) 当我按下复位按钮时,应在停止条件下(SCL=SDA上的高和下降沿)重置此标志 我现在的问题是,我无法通过START命令设置标志,并通过STOP命令重置标志 我应该如何获得这一时期的国旗 entity scltest is port( scl, sda: in std_logic; s
entity scltest is
port( scl, sda: in std_logic;
scled, sdaled, flag: out std_logic
);
end scltest;
architecture test of scltest is
begin
scled <= scl;
sdaled <= sda;
process(sda)
begin
if (scl = '1' AND rising_edge(sda)) then
flag <= '1';
else
if (scl = '1' AND falling_edge(sda)) then
flag <= '0';
end if;
end if;
end process;
end test;
实体测试是
端口(scl,sda:std_逻辑中;
scled、SDLED、标志:输出标准逻辑
);
结束SCL试验;
scltest的架构测试是
开始
scled您的基本想法似乎是,您希望对总线时钟执行所有逻辑。然而,您的设计不应该完全依赖于总线时钟——特别是因为I²C非常慢
您需要一个运行中的系统,该系统可以执行其他任务(如USB、USART…),向主机系统(PC、SoC…)报告I²C总线的状态
为此,您需要对SCL和SDA进行采样,并让一个由系统时钟计时的内核执行上升/下降沿、总线状态等的实际分析。这样,您的所有逻辑将与系统时钟同步
根据您的开发板,可能存在已准备好主机端的示例设计,您只需将模块“插入”到正确的位置即可。IMHO1是Digilent斯巴达板的一个很好的起点,因为主机端代码可以通过工具和编程API免费获得
1我与Digilent没有任何关系。谢谢您的回答。这是否意味着我将自己实现一个“边缘检测器”?是的,这就是总线嗅探器将包含的内容。