Leyendo PDF a través de FPGA

4

Soy un novato en el mundo FPGA, trabajando en Verilog en estos días. He pensado en un par de proyectos para mi Proyecto FinalYear en mi universidad. Uno de ellos es Handheld Ebook Reader. Bueno, voy a entrenar las otras cosas requeridas, lo que más me preocupa es: ¿Cómo voy a leer un archivo pdf a través de FPGA?

Bueno, en el proyecto, estaré interconectando un módulo de tarjeta MicroSD con FPGA, el FPGA leería el archivo desde el pdf y lo mostraría en la pantalla LCD, la interfaz con la LCD no sería un gran problema ya que tengo un par de buenos recursos para eso, interconectando el módulo de la tarjeta de memoria también. Pero el pensamiento que me ha preocupado al elegir este proyecto es, ¿cómo voy a leer el PDF? Puedo trabajar en el pdf que tiene solo textos, no trabajaré en imágenes, por otra parte si planeo trabajar en imágenes también, tendré que trabajar mucho para varias tareas, por ejemplo, para hacer zoom y otras .   Por favor ayúdame en esto.   Además, estoy bastante interesado en esta tarea. Por favor, dime si esto se puede hacer más fácilmente con el microcontrolador. Tengo un poco de experiencia trabajando con ellos.

    

5 respuestas

10

Primero que todo, necesitas determinar qué vas a hacer con el PDF. Si lo está mostrando, necesitará algo de memoria para el buffer de cuadros y una forma de interactuar con la pantalla. Esa debería ser tu principal preocupación. Luego, comienza a pensar en renderizar el propio PDF. Como los archivos PDF son esencialmente PostScript comprimidos de una forma u otra con fuentes incrustadas, puede dividir sus tareas en algunos elementos principales:

  • parte del FPGA para cargar datos desde una tarjeta SD u otro medio, incluido el acceso al sistema de archivos
  • parte del FPGA para descomprimir trozos de datos, o para acelerar este proceso
  • parte del FPGA para descomprimir datos de imagen (JPEG, PNG, etc.) y copiar en la memoria
  • parte del FPGA para decodificar / ejecutar PostScript
  • parte del FPGA para averiguar qué se debe mostrar (como la página actual); esto podría ser una lógica de delimitación simple o una lógica de escala compleja que maneje una variedad de modos de visualización diferentes
  • una unidad de punto flotante para las coordenadas de punto flotante en PostScript
  • un ALU entero
  • varios motores "GPU" que representan primitivas del motor PostScript (idealmente, en paralelo), por ejemplo. dibujar línea, dibujar polígono, ...
  • uno o dos motores de fuentes para representar las fuentes (esto probablemente será muy complejo, ya que tendrá que ser compatible con características complejas como sugerencias y antialias).
  • una interfaz de pantalla y una interfaz de memoria
  • un controlador UI de algún tipo, tal vez implementando copiar / pegar, selecciones, menús, etc.

Idealmente, los motores 1-5 se canalizarían para obtener el máximo rendimiento. Estarás viendo un gran FPGA para hacer todo esto.

Probablemente podrías hacer esto en una CPU, pero si realmente quieres hacerlo en una FPGA, esta es probablemente la ruta a seguir.

    
respondido por el Thomas O
6

No estoy seguro de que las imágenes hagan las cosas más difíciles; Acercar el texto es lo suficientemente difícil como lo es. Si quiere hacer cosas mediante FPGA, definitivamente desea un procesador de software, es decir, un microcontrolador en una parte de su FPGA. La decodificación de archivos PDF no es algo que se quiera hacer en paralelo, como funciona un FPGA. Los proveedores de FPGA como Xilinx y Altera ofrecen IP para los controladores, pero el problema puede ser que una biblioteca de PDF no esté disponible para ellos. En esto, tendrás mejores posibilidades con un controlador externo, que utiliza el FPGA como controlador de pantalla.

    
respondido por el stevenvh
4

Coloque una CPU (algún tipo de núcleo de microcontrolador) en su FPGA y luego programe un lector de PDF para esa CPU. Si sigue esta ruta, es posible que desee considerar NO hacer PDF, sino HTML, ya que ese formato es un poco más adecuado para el tipo de ajuste y cambio de tamaño que querrá hacer en un lector. Hay cualquier número de bibliotecas de representación HTML por ahí que podría reutilizar a cualquier CPU que incorpore.

    
respondido por el Michael Kohne
2

Como han dicho otros, es probable que desee hacer la decodificación de PDF como software en un procesador de núcleo blando.

Uno de los principales requisitos que impondrá es que es probable que necesite una cantidad de megabytes de RAM externa, tanto para el código del programa como para los datos.

Teóricamente, con suficiente memoria, se podría hacer que cualquier procesador decodifique un PDF ... puede ser lento en la operación y doloroso de desarrollar si tiene que escribirlo desde cero.

También es probable que necesite más RAM de la que está disponible en el chip en un FPGA asequible para formar el búfer de cuadros de video para una pantalla LCD de un tamaño en el que vale la pena mostrar un PDF (aunque una pantalla monocromática del tamaño de un teléfono inteligente podría encajar) . Necesitará tener una memoria de video de doble puerto o crear un árbitro para permitir que la lógica del procesador escriba en ella intercalada con los bits de reloj de la lógica de visualización.

Hablando francamente, un lector electrónico no es una buena aplicación de FPGA, es un sistema en chip, arquitectónicamente muy similar a un teléfono inteligente. Uno podría agregar un fpga barato como pin-remapper para hacer el mismo PCB utilizable con una variedad de módulos de vidrio LCD de productos básicos, pero la lógica pertenece a un buen núcleo ARM moderno o similar.

    
respondido por el Chris Stratton
2

Un FPGA no es realmente el dispositivo adecuado para realizar este tipo de tareas. Hay CPU con todos los periféricos necesarios para realizar el trabajo (por ejemplo, LPC2478) que serán más baratos y consumirán una tonelada menos de energía. Si desea hacerlo con un FPGA como ejercicio de aprendizaje, le sugeriría que rompa la tarea y comience. Facilitando su vida preprocesando el contenido del libro en una PC en un formato de archivo que sea más fácil de mostrar que el PDF. , p.ej Mapa de bits sin comprimir o mapas de bits de longitud de ejecución codificados. Y comience utilizando un simple sistema de archivos orientado a bloques, ya que hacer cosas FAT en un FPGA será bastante complicado. De esa manera, deberías poder hacer que algo funcione razonablemente rápido, y luego ver cosas más complejas como otro formato de archivo, etc. Si empiezas a tratar de hacerlo todo, existe una gran posibilidad de que pases un montón de tiempo y no tengas nada que hacer para demostrarlo cuando te aburres o te quedes sin tiempo. En algún momento, definitivamente necesitará usar una CPU, ya sea externa o en el FPGA.

    
respondido por el mikeselectricstuff

Lea otras preguntas en las etiquetas