VHDL 四人抢答器程序哪错了,编译不出来,错误不知道咋那么该

libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_... library ieee;
use ieee.std_logic_1164.all;
use ieee. std_logic_arith.all;
use ieee. std_logic_unsigned.all;
--------------------------------------------------------------------
entity qiangda is
port( S1,S2,S3,S4 : in std_logic; --输入:表示4个人,为0表示有抢答
K : in std_logic; --主持人抢答开始键
G : out std_logic; --报警信号
ledag : out std_logic_vector (6 downto 0);
Dout : out std_logic_vector(3 downto 0) ); --抢答结果显示
end qiangda;
--------------------------------------------------------------------
architecture behave of qiangda is
  signal Enable_Flag : std_logic;--允许抢答控制变量,为1表示允许抢答
signal S : std_logic_vector(3 downto 0);
signal D : std_logic_vector(3 downto 0);
begin
process(S1,S2,S3,S4,K) --允许抢答控制
begin
S<=S1&S2&S3&S4;
If (K='1') then
Enable_Flag<='1';
elsif(S/="1111") then
Enable_Flag<='0';
end if;
end process;

process(S1,S2,S3,S4,K) --抢答结果显示
begin
if(K='0') then
D<="0000";
Elsif (Enable_Flag='1') then
if(S1='0') then
D(0)<='1';
G<='0';
elsif(S2='0') then
D(1)<='1';
G<='0';
elsif(S3='0') then
D(2)<='1';
G<='0';
elsif(S4='0') then
D(3)<='1';
G<='0';
end if;
dout<=d;
end if;
end process;

process(d) --显示抢答成功者号码
begin
case d is
when "0000"=>ledag<="0111111";
when "0001"=>ledag<="0000110";
when "0010"=>ledag<="1011011";
when "0100"=>ledag<="1001111";
when "1000"=>ledag<="1100110";
when others=>ledag<="0000000";
end case;
end process;
end behave;
展开
 我来答
duwei9342
2014-05-27 · TA获得超过113个赞
知道小有建树答主
回答量:59
采纳率:0%
帮助的人:62.8万
展开全部

你的程序能够编译,在MAXPLUS里面是可以编译的。如果你使用MAXPLUS不能编译,山态需要检查编译的是否为当前文件,选择File-Project-Set project to current file。如果你用的是quartus,检查一下你的文件是否设为顶层文件,否则一定报错。

但好厅是需要说的是,你的程序不能实现抢答器的功能。

从仿真来看,Dout抢答结果不能正确显示第一个抢答的序号。上图S4第一个抢友唯隐答,输出为8(正确),但是当S3第二个按下抢答器后,输出变成了C(1100),四个人都按下之后编程了F(1111)。

建议你思考:

使用时序电路(触发器)来做这个任务。因为组合电路不能实现抢答器的功能。虽然你使用了Process过程,但是达不到信号锁存的功能。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式