FPGA基础知识问答500问连载 (二)
> 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:增加冗余项消除逻辑冒险。
FPGA 相关文章:
- 用大电流LDO为FPGA供电需要低噪声、低压差和快速瞬态响应(08-17)
- 基于FPGA 的谐波电压源离散域建模与仿真(01-30)
- 基于FPGA的VRLA蓄电池测试系统设计(06-08)
- 降低从中间总线电压直接为低电压处理器和FPGA供电的风险(10-12)
- FPGA和功能强大的DSP的运动控制卡设计(03-27)
- DE0-Nano-SoC 套件 / Atlas-SoC 套件(10-30)