以下用VHDL程序的IF语句和CASE语句共同描述的4选1选择器有什么错误?急!
程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMUX41BISPORT(S4,S3,S2,S1:INSTD_LOGI...
程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MUX41B IS
PORT(S4,S3,S2,S1:IN STD_LOGIC;
Z4,Z3,Z2,Z1:OUT STD_LOGIC);
END ENTITY MUX41B;
ARCHITECTURE ART OF MUX41B IS
SIGNAL TEMP:INTEGER RANGE 0 TO 15;
BEGIN
PROCESS(S4,S3,S2,S1)IS
BEGIN
TEMP<=0;
IF(S1='1')THEN TEMP<=TEMP+1;
ELSIF(S2='1')THEN TEMP<=TEMP+2;
ELSIF(S3='1')THEN TEMP<=TEMP+4;
ELSIF(S4='1')THEN TEMP<=TEMP+8;
ELSE NULL;
END IF;
Z1<='0';Z2<='0';Z3<='0';Z4<='0';
CASE TEMP IS
WHEN 0=>Z1<='1';
WHEN 1|3=>Z2<='1';
WHEN 4 TO 7|2=>Z3<='1';
WHEN OTHERS=>Z4<='1';
END CASE;
END PROCESS;
END ARCHITECTURE ART;
有哪些错误,请改正并说明原因。 展开
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MUX41B IS
PORT(S4,S3,S2,S1:IN STD_LOGIC;
Z4,Z3,Z2,Z1:OUT STD_LOGIC);
END ENTITY MUX41B;
ARCHITECTURE ART OF MUX41B IS
SIGNAL TEMP:INTEGER RANGE 0 TO 15;
BEGIN
PROCESS(S4,S3,S2,S1)IS
BEGIN
TEMP<=0;
IF(S1='1')THEN TEMP<=TEMP+1;
ELSIF(S2='1')THEN TEMP<=TEMP+2;
ELSIF(S3='1')THEN TEMP<=TEMP+4;
ELSIF(S4='1')THEN TEMP<=TEMP+8;
ELSE NULL;
END IF;
Z1<='0';Z2<='0';Z3<='0';Z4<='0';
CASE TEMP IS
WHEN 0=>Z1<='1';
WHEN 1|3=>Z2<='1';
WHEN 4 TO 7|2=>Z3<='1';
WHEN OTHERS=>Z4<='1';
END CASE;
END PROCESS;
END ARCHITECTURE ART;
有哪些错误,请改正并说明原因。 展开
1个回答
展开全部
能再描述一下你想设计的功能是什么吗?你现在的这个代码描述,完全不是4选1,逻辑功能是不对的。 如果是4选1多路选择器,应该是 4个input, 1个output,和1个2bit的选择信号才对。下面这个4选1程序你可以参考一下:
LIBRARY
IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY
max4_1 IS
PORT(a,b,c,d,s1,s2 : IN STD_LOGIC;
y : OUT STD_LOGIC);
END ENTITY
max4_1;
ARCHITECTURE hf1 OF max4_1 IS
SIGNAL ss : STD_LOGIC_VECTOR (0 TO 1);
BEGIN
ss<=s2&s1;
PROCESS(ss)
BEGIN
CASE ss IS
WHEN "00" => y<=a;
WHEN "01" => y<=b;
WHEN "10" => y<=c;
WHEN "11" => y<=d;
WHEN OTHERS => NULL;
END CASE;
END PROCESS;
END ARCHITECTURE hf1;
电路原理图这样子:
更多追问追答
追问
这是书上的例题,老师说这个例题有错误,叫我们找出来并且改正。这个例题的题目就是用IF语句和CASE语句共同描述4选1选择器,然后给的程序就是我给出的那样。
追答
那我就说说这个程序的问题把。
1. 语法上说,temp根本就没有定义,从哪里冒出来的?
2. 输出有4个,那就不是4选1了。如果真要描述4选1 mux,输出只要1个;
3. 当某个输出为1时,其他的输出是什么值?其他的应该是0才对,所以赋值的时候每个分之下都要给其他输出赋值成0.
其实这段程序真的全是错,如果要描述4选1,就应该是我给的例子那样的。当然可以把case语句写成if语句,也可以实现同样的功能,当时电路结构会不同。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询