微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > FPGA基础知识问答500问连载 (二)

FPGA基础知识问答500问连载 (二)

时间:02-11 来源:网络整理 点击:

> carryout <= '1';

next_state <= '0';

when "101" => carryout <= '0';

next_state <= '1';

when "110" => carryout <= '0';

next_state <= '1';

when "111" => carryout <= '1';

next_state <= '1';

when others => carryout <= 'X';

next_state <= 'X';

end case;

end process;

25:设计一个自动饮料售卖机,饮料10分钱,硬币有5分和10分两种,并考虑找零,
1.画出fsm(有限状态机)
2.用verilog编程,语法要符合fpga设计的要求
3.设计工程中可使用的工具及设计大致过程?

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

enTIty drink_auto_sale is

port(clk: in std_logic;

reset:in std_logic;

sw101:in std_logic;

sw102:in std_logic;

buy : out std_logic;

back: out std_logic);

end drink_auto_sale;

architecture Behavioral of drink_auto_sale is

type state_type is(st0,st1);

signal cs ,ns : state_type;

begin

process(clk,reset)

begin

if(reset = '1') then

cs <= st0;

elsif(clk'event and clk = '1') then

cs <= ns;

end if;

end process;

process(reset ,cs)

begin

case cs is

when st0 => if( sw101 = '1') then

ns <= st1;

buy<= '0';

back<= '0';

elsif(sw102 = '1') then

ns <= st0;

buy<= '1';

back <= '0';

else

ns <= st0 ;

buy <= '0';

back <= '0';

end if;

when st1 => if(sw101 = '1') then

ns <= st0;

buy <= '1';

back <= '0';

elsif(sw102 = '1') then

ns <= st0;

buy <= '1';

back <= '1';

end if;

when others => ns <= st0;

buy<= '0';

back <= '0';

end case;

end process;

end Behavioral;

设计过程:设定三个状态:0分,5分;当状态为0分时,接收到5分信号脉冲后转为5分;接收到10分信号脉冲时,转到0分状态,同时弹出饮料,不找零;状态为5分时,接受到5分信号,弹出饮料,不找零,返回0分状态;当接受到10分状态时,弹出饮料,找零,并返回零分状态。

所用设计工具:ISE7.1,modelsim,synplify

(不知道为什么上面的状态机设计在synplify的RTL view中没能看到状态机流程图,所以状态转移图就没画)。

Q26:什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?

线与逻辑是两个输出信号相连可以实现与的功能。在硬件上,要用oc门来实现,由于不用 oc门可能使灌电流过大,而烧坏逻辑门. 同时在输出端口应加一个上拉电阻。Oc门就是集电极开路门。

Q27:什么是竞争与冒险现象?怎样判断?如何消除?

在组合电路中,某一输入变量经过不同途径传输后,到达电路中某一汇合点的时间有先有后,这种现象称竞争;由于竞争而使电路输出发生瞬时错误的现象叫做冒险。(也就是由于竞争产生的毛刺叫做冒险)。判断方法:代数法(如果布尔式中有相反的信号则可能产生竞争和冒险现象);卡诺图:有两个相切的卡诺圈并且相切处没有被其他卡诺圈包围,就有可能出现竞争冒险;实验法:示波器观测;
解决方法:1:加滤波电路,消除毛刺的影响;2:加选通信号,避开毛刺;3:增加冗余项消除逻辑冒险。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top