以下用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;
有哪些错误,请改正并说明原因。
展开
 我来答
chit_wps
推荐于2017-12-16 · TA获得超过356个赞
知道小有建树答主
回答量:183
采纳率:0%
帮助的人:143万
展开全部

能再描述一下你想设计的功能是什么吗?你现在的这个代码描述,完全不是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语句,也可以实现同样的功能,当时电路结构会不同。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式