Vhdl 硬件中的叠加绘图

Vhdl 硬件中的叠加绘图,vhdl,Vhdl,特别是它是一个简单的鼠标光标。我已经在软件中实现了这一点,但在硬件中我很难做到这一点。在软件中,我可以将位图存储为常量数组,然后引用它以获得vga显示所需的颜色信息。我在硬件上也尝试过类似的方法,但意识到恒定信号只存在于模拟中,而不存在于合成中 我被困在一个盒子里,想得到一些建议来帮助我摆脱它,这样我就可以完成这件事。正如老师们常说的那样,我需要从硬件方面思考 软件是这样运行的: const char mouse_data{ 0xff, 0x bb ... }; color = mouse_

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

我被困在一个盒子里,想得到一些建议来帮助我摆脱它,这样我就可以完成这件事。正如老师们常说的那样,我需要从硬件方面思考

软件是这样运行的:

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

是的,在编程FPGA时,考虑硬件是首要的事情

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


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

是的,在编程FPGA时,考虑硬件是首要的事情

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


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

“成本”当然是可以综合的。所以你必须把你的代码给我们看看为什么它不适合你

根据所使用的语法,const在大多数合成VHDL中被实现为解码器/mux。
可能会导致您出现问题的是“char”,它可能无法合成,但没有什么可以阻止您创建一个类型为“char”的代码


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

'cost'当然是可合成的。所以你必须把你的代码给我们看看为什么它不适合你

根据所使用的语法,const在大多数合成VHDL中被实现为解码器/mux。
可能会导致您出现问题的是“char”,它可能无法合成,但没有什么可以阻止您创建一个类型为“char”的代码


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

有人告诉我把它变成一个以颜色为键的解码器。它成功了。有人告诉我把它变成一个以颜色为键的解码器。成功了。