我在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;
我还没有得到。你能帮我弄清楚这里发生了什么吗?
答案 0 :(得分:4)
要理解这一点,您必须使用逻辑输入和本机选项来理解matlab sum
。逻辑总和是合乎逻辑的。因此,sum
可以替换为or
sum([true,true],'native')
这正是你的编码员提出的。 for-Loop实现了总和(sum(KEY, 'native')
),其中编码器识别出它可以使用OR实现。
最后,从逻辑到uint8的转换是填充7个零位。