为什么总和陈述如此奇异地合成?

时间:2014-05-16 15:38:12

标签: matlab vhdl hdl-coder

我在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;

我还没有得到。你能帮我弄清楚这里发生了什么吗?

1 个答案:

答案 0 :(得分:4)

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

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

这正是你的编码员提出的。 for-Loop实现了总和(sum(KEY, 'native')),其中编码器识别出它可以使用OR实现。

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