En primer lugar, no me queda claro por qué está utilizando unsigned
type para vectores de un bit. Sin embargo, su declaración if
generará un error en tiempo de compilación si lo escribe de esa manera. La forma correcta de escribir la misma declaración if
usando el tipo unsigned
será,
IF (in_adc_1 = "1" and in_adc_2 = "1") THEN
El "1"
(entre comillas dobles) representa un vector de un solo bit .
La segunda declaración if
proporcionada por usted en la sección de comentarios lee
IF (in_adc_1 and in_adc_2 := 1)
. Nuevamente, esto tendrá que ser modificado de la siguiente manera, para que la declaración se compile correctamente.
IF ((in_adc_1 and in_adc_2) = "1") THEN
Ambas formas de AND-ing son correctas en lo que respecta a las herramientas de compilación.
Sin embargo, puede usar los tipos std_logic
o bit
para lograr la misma funcionalidad (como se señala en los comentarios). En este caso, la instrucción if
anterior se debe volver a escribir como,
IF (in_adc_1 = '1' and in_adc_2 = '1') THEN
o como
IF ((in_adc_1 and in_adc_2) = '1') THEN
El '1'
(en comillas simples) es un solo bit cuando la señal es de tipo std_logic
o bit
.
Nota: En VHDL, :=
se usa para asignaciones de variables o para proporcionar valores iniciales