[Curso Vergalog y diseño de Hardware] introduccion al curso

esta es mi primera vez haciendo curso de esto pero espero que quede bien

Sueño

bueno supongamos que un día te levantas y dices ‘hmm, quiero hacer un procesador’ gran error, no puedes comenzar con eso, bueno, si ya tienes los conocimientos previos adelante, pero mucha gente del foro probablemente ni sabe de diseño del hardware

Problema

Hacer pines a mano, conectarlo todo, dibujar los circuitos impresos y de más es muy tedioso, pero hay una solución

Solución

Hay un lenguaje de programación llamado Verilog que no es exactamente uno, si no un lenguaje de descripción de hardware, esto quiere decir que es un lenguaje de descripcion de una maquina o como debe comportarse un circuito electronico

Verilog

bueno, empezemos, en verilog a diferencia de otros lenguajes como Java o C++ este no es secuencial, claro, hay ciertas excepciones o puedes simularlo pero no es secuencial, se basa en eventos de pulsos electricos, en conexiones y registros

coneptos basicos

reg

un reg es un registro, no necesariamente de memoria o contenedor, este almacena un valor y requiere una longitud, su sintaxis es

reg [longitud:0] nombre;

por ejemplo para indicar un registro de 8 bits se usa

reg [7:0] miRegistro;

por que 7? por que en verilog se calcula desde el bit 0 al 7 que son exactamente 8 bits, tambien puede optar por no poner una longitud y dejarlo como un registro binario

reg miBinario;

wire

un wire es una conexion o comparador entre uno o varios registros se declara de la siguiente forma

wire [longitud:0] nombre;

al igual que los reg pueden ser de 1 bit por ejemplo

wire miBInarioConectado;

operadores

como en C/C++ se pueden usar operadores

assign

asigna un valor a un wire con una expresion su sintaxis es

assign nombre = expr...;

repaso

si alguien entendio con estos conceptos pueden decirme que hace este codigo

reg a = 0;
reg b = 1;
wire c;

assign c = a | b;

los leo en los comentarios!

2 Me gusta

si entendi bien

reg a = 0;
reg b = 1;
wire c;

assign c = a | b;

crea el registro a con el valor 0, el registro b con el valor 1, luego se hace una conexion llamada c? y el assign conecta el c con a y b???

2 Me gusta

hace un comparador que se llama ‘c’ y ese comparador siempre tiene el valor de a aplicada con or con el valor de b es como si hicieras en c ‘x = a | b;’ pero este no requiere actualizarse, simpre se actualiza

2 Me gusta

o sea ‘c‘ siempre sera igual a ‘a‘ o ‘b‘ ¿y como hace decidir que valor usa?

pues mira, el operador binario ‘|’ mescla los bits uno a uno, uno a uno toma el bit del operador 1 y el del operador 2, entonces si alguno de los 2 es 1, pues el bit se setea en 1, y listo papu, asi de simple

2 Me gusta

a, pense que eran operaciones decimales xd que tonto

1 me gusta