这个vhdl代码没有做我想要的。我做错了什么?

时间:2016-04-18 00:58:59

标签: project vhdl implementation fpga

我在一个学校项目工作,我必须设计一个销售门票的机器。有很多要求,我照顾了很多,但我有一个小问题。我,设计师决定机器中的初始票数是多少。然后,在客户一次购买一张票之后,这个号码应该减少一个单位。它不是。怎么了? (在VHDL中编写代码时,我是初学者。)

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;

entity bilete is
   port(en1,en2: in std_logic;
    init: in std_logic;
    B: out std_logic_vector(15 downto 0); 
    err: out std_logic;
    ok: out std_logic);
end bilete;

architecture Bil of bilete is
   signal en : std_logic;
   constant C: std_logic_vector(15 downto 0):=x"0002";
   signal M: std_logic_vector(15 downto 0);

begin
en<= en1 nor en2;
P: process(en,init,M)

variable Verr: std_logic:='0';
variable Vok: std_logic:='0';
variable K: std_logic_vector(15 downto 0):=x"0000";

begin

    if init='0' then      -- inititialize the number of tickets
        K:=C;
        M<=K;
      if en='0' then
        Verr:='0';
        B<=K;
        Vok:='0';
    else if K<0 then 
        Vok:='0';
        B<=x"0000";
        Verr:='1';
    else if K>0 then
        Verr:='0';
        Vok:='1';
        B<=K-x"0001";
        K:=K-x"0001";
        M<=K;
    end if;
    end if;
    end if;


    else  if init='1' then  -- decrement

     if en='0' then
        Verr:='0';
        B<=M;
        Vok:='0';
    else if M<0 then 
        Vok:='0';
        B<=x"0000";
        M<=x"0000";
        Verr:='1';
    else if M>0 then
        Verr:='0';
        Vok:='1';
        B<=M-x"0001";
        M<=M-x"0001";
    end if;
    end if;
    end if;

    end if;
    end if;
err<=Verr;
ok<=Vok;
end process P;
end Bil;

1 个答案:

答案 0 :(得分:1)

K是<table> <th> <td>Name</td> <td>Age</td> </th> <?php while($row = mysql_fetch_row($rs)) { ?> <tr> <td><?php echo $row[0]; ?></td> <td><?php echo $row[1]; ?></td> </tr> <?php } ?> </table> 时未分配的信号。这会创建一个隐式锁存器而不是触发器。