controller - 两个 STD_LOGIC_VECTORS 的按位与运算

标签 controller vhdl vga

嘿,我想知道在 VHDL 中是否有可能与两个 STD_LOGIC_VECTORS一起。例如,我正在编写一个将字符输出到 VGA 监视器的 VHDL 程序。我有一个向量 PixelRow: IN STD_LOGIC_VECTOR(9 DOWNTO 0)PixelColumn: IN STD_LOGIC_VECTOR(9 DOWNTO 0) .我想做的是有一个 STD_LOGIC输出采用两个像素向量并将它们与另一个向量相与,例如。

    Output <= (PixelRow AND NOT "0000000000") OR (PixelColumn AND NOT "0000000000") OR      
              (PixelRow AND NOT "0111011111") OR (PixelColumn AND NOT "1001111111");

我希望这段代码可用于简化以下代码:
    Output <= ((NOT PixelRow(0) AND NOT PixelRow(1) AND NOT PixelRow(2) AND NOT   
              PixelRow(3) AND NOT PixelRow(4) AND NOT PixelRow(5) AND NOT PixelRow(6)      
              AND NOT PixelRow(7) AND NOT PixelRow(8) AND NOT PixelRow(9)))
          OR ((NOT PixelRow(0) AND PixelRow(1) AND PixelRow(2) AND PixelRow(3) AND 
              NOT PixelRow(4) AND PixelRow(5) AND PixelRow(6) AND PixelRow(7) AND 
              PixelRow(8) AND PixelRow(9)))
          OR ((NOT PixelColumn(0) AND NOT PixelColumn(1) AND NOT PixelColumn(2) AND 
              NOT PixelColumn(3) AND NOT PixelColumn(4) AND NOT PixelColumn(5) AND NOT 
              PixelColumn(6) AND NOT PixelColumn(7) AND NOT PixelColumn(8) AND NOT 
              PixelColumn(9)))
          OR ((PixelColumn(0) AND NOT PixelColumn(1) AND NOT PixelColumn(2) AND 
              PixelColumn(3) AND PixelColumn(4) AND PixelColumn(5) AND PixelColumn(6) 
              AND PixelColumn(7) AND PixelColumn(8) AND PixelColumn(9)));

较大的代码块在屏幕周围绘制了一个框。我希望有一个更简单的方法来做到这一点。有人知道如何简化此代码吗?

谢谢

最佳答案

我不清楚你需要什么和/或,以及你需要减少什么。

当然有andor返回相同大小的向量的按位向量运算符。

如果您需要测试 PixelRow 之间的相等/不等式和 "0000000000" ,那么你可以写:PixelRow /= "0000000000"PixelRow = "0000000000" .

如果你需要和-减少一个向量vect : std_logic_vector(7 downto 0)到一个位 bit : std_logic ,最简单的方法可能是使用一个过程:

process (vect) is
    variable tmp : std_logic;
begin
    tmp := '1';
    for I in 7 downto 0 loop
        tmp := tmp and vect(I);
    end loop;
    bit <= tmp;
end process;

如果您需要经常这样做,那么您可以定义一个 function而不是 process去做这个。

关于controller - 两个 STD_LOGIC_VECTORS 的按位与运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11027214/

相关文章:

javascript - 用于在 Controller 之间共享数据的 AngularJS 工厂

ruby-on-rails - 我不明白这个? (Rails 上的 ruby )

vhdl - 错误 (10028) : Can't resolve multiple constant drivers for net. .. VHDL 错误

assembly - 使用 16 位模式打印字母,无需 BIOS 例程

php - 在事件监听器中调用 Controller /操作

angularjs - 根据状态更改按钮样式 angularjs

带 for 循环的 VHDL 断言测试平台

vhdl - 什么时候在 VHDL 设计中使用 block 语句,什么时候不用?

video - 汇编 x86 视频模式

assembly - 如何在 tasm 中在屏幕上打印 SVGA 信息?