使用许多可以共享的相同单元优化设计

时间:2016-10-24 02:06:39

标签: optimization vhdl

我的设计可以按需生成视频信号,而无需使用RAM资源进行帧缓冲。

我有一个代表屏幕布局的层次结构,顶层块生成像素时钟和同步信号,并创建一个显示下一个像素坐标的信号。下面是具有相同界面的各种块:

type point is record
    valid : std_logic;
    x : unsigned(11 downto 0);
    y : unsigned(11 downto 0);
end record;

type color is record
    r : std_logic;
    g : std_logic;
    b : std_logic;
end record;

component source is
    port(
        pos : in point;
        col : out color);
end component;

一般的想法是这些块中的每一个都直接生成信号,或者包含子块。

我想坚持像素点播模式,因为它允许我做

architecture syn of zoom2_block is
    signal slave_pos : point;
begin
    slave_pos.valid <= pos.valid;
    slave_pos.x <= "0" & pos.x(10 downto 1);
    slave_pos.y <= "0" & pos.y(10 downto 1);

    slave : source port map(
        pos => slave_pos,
        col => col);
end architecture;

现在,几个块的最里面的像素生成器非常相似(例如字体像素查找),并且因为只有一个像素将被传递到外部,我想知道我是否可以以某种方式共享块,例如比如层次结构中的font

output
  source : split_screen
    source : zoom
      source : text
        font  
    source: text
      font

text块本身无法共享,因为它们包含赋予font块的实际字符代码 - 但font块两次完全相同 - 采取坐标和字符代码并返回适当的像素值,没有状态。由于字体数据很大,无法共享这些是一个问题。

到目前为止我的想法:

  1. '-'期间让每个块输出pos.valid = '0',希望编译器会注意到层次结构中的一个块始终是这种情况。我不确定编译器会得到这个。

  2. 创建一个特殊组件,用于仲裁对字体块的访问,作为array(1 to N) of point接口的通用,选择带pos.valid = 1的第一个输入。这仍然需要我构建一个不再是树的层次结构。

  3. 可以这样做吗?

0 个答案:

没有答案