Ошибка при программировании сумматора с modelsim в VHDL - PullRequest
0 голосов
/ 24 марта 2020

Ошибка: C: / Users / имя пользователя / dir1 / dir2 / sumador_modelo.vhd (11): рядом с «NOT»: (vcom-1576) ожидает «)».

Ошибка: C: / Users / username / dir1 / dir2 / sumador_modelo.vhd (12): Выход из компилятора VHDL.

LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY sumador_modelo IS
   PORT (a,b,Cin:IN STD_LOGIC; sum,Cout:OUT STD_LOGIC);
END sumador_modelo;

ARCHITECTURE sumador_modelo_flujo OF sumador_modelo IS
    BEGIN   
    sum<=(NOT a AND NOT b AND Cin) OR (NOT  a AND b AND NOT Cin) OR (a AND NOT b AND NOT Cin) OR (a AND b AND Cin); 
    Cout<=(NOT a AND b AND Cin) OR (a AND NOT b AND Cin) OR (a AND b NOT Cin) OR (a AND b AND Cin);
END sumador_modelo_flujo;

1 Ответ

0 голосов
/ 24 марта 2020

Вы пропускаете "и" перед словом not в выражении для Cout:

sum<=(NOT a AND NOT b AND Cin) OR (NOT  a AND b AND NOT Cin) OR (a AND NOT b AND NOT Cin) OR (a AND b AND Cin); 
Cout<=(NOT a AND b AND Cin) OR (a AND NOT b AND Cin) OR (a AND b and NOT Cin) OR (a AND b AND Cin);

Это может сбить с толку при отладке. Поэтому вы закомментируете все выражение целиком и исследуете его по частям, чтобы найти ошибку. Итак, для вашего выражения:

- Шаг 1:

Cout<=(NOT a AND b AND Cin) ; 

- Шаг 2, сначала сработал, поэтому добавьте еще один кусок:

Cout<=(NOT a AND b AND Cin) OR (a AND NOT b AND Cin) ; 

- Шаг 3, предыдущий сработал, поэтому добавьте еще один фрагмент:

Cout<=(NOT a AND b AND Cin) OR (a AND NOT b AND Cin) OR (a AND b NOT Cin) ;

Ах, теперь у нас есть ошибка. Следовательно, проблема в третьем выражении. Теперь исследуйте третье выражение, и вы сможете быстрее увидеть ошибку

...