3

我在 FPGA 开发板上有 4 个按钮,所以我写了

function [HEX0] = Bar(KEY)
  n = uint8(sum(KEY, 'native'));
  ...

不幸的是,HDL Coder 把它变成了下面的 VHDL 块:

y := '0';

FOR k IN 0 TO 3 LOOP
  y := y OR KEY(k);
END LOOP;

y_0 := '0' & '0' & '0' & '0' & '0' & '0' & '0' & y;

我就是不明白。你能帮我弄清楚这里发生了什么吗?

4

1 回答 1

4

要理解这一点,您必须了解sum带有逻辑输入和本机选项的 matlab。合乎逻辑的总和就是合乎逻辑的。因此sum可以替换为or

sum([true,true],'native')

这正是您的 Coder 提出的。for 循环实现了 sum ( sum(KEY, 'native')),其中编码器认识到它可以使用 OR 来实现。

最后,从逻辑到 uint8 的转换是通过填充 7 个零位完成的。

于 2014-05-16T15:48:36.560 回答