# Programacion en vhdl



## GaboCaMarti (Mar 26, 2014)

necesito realizar un contador (codigo) en vhdl que me detecte los numeros primos del 2 al 9973 y que al momento de la simulacion me aparezcan en la variable de salida en forma binaria. Para el codigo seria de 14 bits (ya que son los necesarios para completar el 9973). Ademas de que cuente con un reset (sin importar el numero que vaya) y comience desde 2. Este codigo junto con otros se implementara en una FPGA.

Gracias por la ayuda. ...


----------



## DOSMETROS (Mar 26, 2014)

Es imprescindible que subas lo que llevás hecho-averiguado hasta ahora como para poder recibir ayuda.

Fijate si algo de aqui te sirve :

https://www.forosdeelectronica.com/busqueda.htm?cx=partner-pub-2315955773772045%3A8229477962&cof=FORID%3A10&ie=ISO-8859-1&q=contador++en+vhdl+fpga&siteurl=www.forosdeelectronica.com%2Fsearch.php%3Fsearchid%3D973675&ref=www.forosdeelectronica.com%2Fusercp.php&ss=7912j20963776j13


----------



## GaboCaMarti (Mar 26, 2014)

subo un codigo que hice, si compila pero no hace lo que deseo. Sería de gran ayuda si se pudiera orientarme


----------



## DOSMETROS (Mar 26, 2014)

Te sugiero que lo subas como texto , por si alguien lo quiere correr para probarlo


----------



## chclau (Mar 26, 2014)

Hola,

Si tuviera que elegir ejemplos de cosas que NO daria a un estudiante para hacer en VHDL, este seria el primero.

Para encontrar todos los numeros primos en un rango tengo que

1. definir dos como primo
2. explorar el numero siguiente, o sea, tres
3. como tres no es divisible por dos, lo incluyo en la tabla de primos
4. ahora exploro el cuatro, cuatro es divisible por dos, no es primo
etc.
Obviamente admite una simplificacion trivial que es la de explorar solo los numeros impares.

O sea que te piden hacer en VHDL, entre otras cosas, lo siguiente:
1. Dividir
2. generar y actualizar una tabla de numeros primos
3. y encima tiene que ser sintetizable en una FPGA!!!!!

y todo eso de un estudiante que no sabe ni siquiera como hacer un misero contador en VHDL??????????

Si te lo pidio un profesor, esta borracho. Si es por tu propia iniciativa, empeza por cosas mas simples.
Saludos


----------



## GaboCaMarti (Mar 26, 2014)

Si se a lo que te refieres brother... Eso que me explicaste, cualquier persona puede encontrarlo en internet. Un contador es sencillo de hacer, pero que el contador imprima los numeros primos, es ahi donde no supe implementar el algoritmo en vhdl. Un contador ascendente o cualquier otro tipo es relativamente mas sencillo... Es un proyecto, un profesor lo dejo... De cualquier forma gracias por tu aporte!


----------



## chclau (Mar 27, 2014)

Si buscaste por la internet habras visto que es casi imposible encontrar un algoritmo sintetizable para lo que pides.

Podrias explicar cual es la idea del algoritmo? Asi como lo escribiste esta mal, no puede haber un elsif para clk'event y otros elsif para otras cosas... eso no es sintetizable. La logica debe efectuarse en el bloque de reset o en el de clock, porque asi funciona un flip flop.

Y faltan muchas cosas mas, un lazo que explore los numeros, una tabla de primos... en fin, trata de explicar con palabras que querias lograr y tal vez pueda ayudarte


----------



## GaboCaMarti (Mar 27, 2014)

En lo único que pido ayuda es en la elaboración del algoritmo para detector de numeros primos... Todo lo demás en teoría sé hacerlo.
si pudieras ayudarme, basado en el diagrama de flujo siguiente a realizar en vhdl el codigo, en JAVA ya lo hice y si funciona correctamente, pero soy primerizo en vhdl y tengo desconocimiento en operadores, declaracion de variables entre otras cosas... Subo el diagrama y cualquier ayuda será bienvenida.

Saludos.


----------



## chclau (Mar 27, 2014)

Una pregunta fundamental es si va a ser implementado en una FPGA (como pusiste), o no. Si NO va a ser implementado en una FPGA podes utilizar la funcion MOD y es (relativamente) simple. Si va a ser implementado en FPGA es relativamente complicado.

Aun asi, tenes que leer un poco bastante sobre como usar variables, array y for en VHDL. Si aprendiste JAVA, sabes como es. No hay atajos. Tenes que empezar por ejemplos simples para entender los complejos. Por eso te digo, hace un contador. Despues, un lazo que actualice n contadores, con lo que aplicaras for y arrays. Y de ahi seguimos hablando.

Suerte


----------

