在硬件中叠加绘图

时间:2012-04-30 21:41:05

标签: vhdl

特别是它的一个简单的鼠标光标。我已经在软件中实现了这个,但是我在硬件中做这个很困难。在软件中,我可以将位图存储为常量数组,然后引用它以获得要显示的vga所需的颜色信息。我在硬件中尝试了类似的方法,但意识到恒定信号仅存在于模拟而非合成中。

我精神上被困在一个盒子里,想要一些建议,以帮助摆脱它,所以我可以完成这个。我需要用硬件思考,正如我的老师总是说的那样。

软件是这样的:

 const char mouse_data{ 0xff, 0x bb ... };
 color = mouse_data[1];
 vga_write(vga_base, offset, color);

2 个答案:

答案 0 :(得分:1)

是的,在编程FPGA时,思考硬件是首要任务。

因此,在您的软件实现中,您的const char数组存储在计算机的内存中 - 因此解决方案可能是在FPGA设备中创建一些内存,然后将其存储在那里。大多数FPGA都有某种内置存储器,您可以推断(编写代码使其自动映射到存储器块)或实例化(编写代码以直接使用特定的存储器块类型)。通常,您也可以指定一个数据块,以便在配置期间预加载它。

例如,在Xilinx芯片上,您可以添加新的IP内核,选择Xilinx内存生成器,并生成一个只读的BlockRam,预先加载光标数据。这是一种可能性,虽然不一定是最好的解决方案。

答案 1 :(得分:0)

'成本'当然是合成的。因此,您必须为我们提供代码,以了解为什么它不适合您。

取决于它使用的语法,const在大多数合成的VHDL中实现为解码器/多路复用器。
可能导致问题的是“char”,这可能不是可合成的,但没有什么可以停止你创建一个'char'类型。

想象一下N:1 mux,其中N的输入值固定为0或1而不是信号。这是一个const,可以用作寄存器输入的某种赋值。