为什么可以';t使用elsif使我的VHDL程序无法工作,如果无法识别一种状态
我是一名西班牙用户,是一名VHDL编程新手。问题是,我试图用这个案例建立一个机器状态,但不起作用。然后我决定使用ELSIF指令,所有指令工作正常,但状态0010不工作a我不知道为什么这是一个非常轻松的程序,但不理解为什么y不工作原谅我的英语不好,但我尽了最大努力谢谢我接下来展示程序:为什么可以';t使用elsif使我的VHDL程序无法工作,如果无法识别一种状态,vhdl,intel-fpga,Vhdl,Intel Fpga,我是一名西班牙用户,是一名VHDL编程新手。问题是,我试图用这个案例建立一个机器状态,但不起作用。然后我决定使用ELSIF指令,所有指令工作正常,但状态0010不工作a我不知道为什么这是一个非常轻松的程序,但不理解为什么y不工作原谅我的英语不好,但我尽了最大努力谢谢我接下来展示程序: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; --definimos identidad de la in
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
--definimos identidad de la interfaz
entity interfaz is
port(
sen:in std_logic_vector(3 downto 0);--entrada de sensor bus de 4 bits
clk:in std_logic;
mda, mdr, mia, mir:out std_logic);--mdr,mda=motor derecho retroceso,avance == mia,mir=motor izquiero avance,retroceso
end interfaz;
--comenzando arquitectura de interfaz
architecture behavior of interfaz is
----------------------------------------------------
--Instruccion con herramienta elseif
process
begin
wait until clk'event and clk='1';
if (sen=(0000)) then --alto
mda<='0';
mdr<='0';
mia<='0';
mir<='0';
elsif (sen=(0001)) then --retroceso
mda<='0';
mdr<='1';
mia<='0';
mir<='1';
elsif (sen=0010) then --avance
mda<='1';
mdr<='0';
mia<='1';
mir<='0';
elsif (sen=(0100)) then --izquierda
mda<='0';
mdr<='1';
mia<='1';
mir<='0';
elsif (sen=(1000)) then --derecha
mda<='1';
mdr<='0';
mia<='0';
mir<='1';
end if;
end process;
end behavior;
ieee库;
使用ieee.std_logic_1164.all;
使用ieee.std_logic_unsigned.all;
--国际交流的定义
实体interfaz是
港口(
sen:在标准逻辑向量(3到0)中--entrada de sensor bus de 4位
clk:标准逻辑中;
mda、mdr、mia、mir:输出std_逻辑)--mdr,mda=运动型Derecoso,avance==mia,mir=运动型izquiero avance,Retracoso
结束干涉;
--科门赞多·阿奎特塞拉国际酒店
interfaz的建筑行为是
----------------------------------------------------
--埃尔塞伊夫学院
过程
开始
等待clk'事件和clk='1';
如果(sen=(0000))那么--alto
mda将sen=0010
类似于sen
与4位向量进行比较,但它是
实际上,与十进制值0010=10=10进行比较,因为缺少
”
围绕0010
值。通过添加”
,可以在所有位置修复此问题,如
“0010”
VHDL基本上是强类型的,使用ieee.std\u logic\u unsigned.all代码>添加
允许比较标准逻辑向量
和整数
的函数,以及
这就是问题通过语法检查的原因
此外:
- 通过在
进程
之前添加开始
来修复语法错误,因为这是
体系结构中需要
- 考虑使用if
上升沿(clk)
代替等待clk'事件和clk='1'
- 考虑使用
case
你好,莫顿,谢谢你的快速回答,我将检查修复程序并告诉你它是如何进行的祝你好运朋友再次你好,莫顿,谢谢你的帮助,我能够修复我的问题,工作正常,我将尝试重写用例,但现在很好,谢谢,祝你好运