我想要做的是拥有 Q - 10 位和 C - 4 位并执行操作 -
Q,C = Q,C << 1
(左移 C 的 MSB 到 Q 的 LSB)
其中 Q,C 被 14 位视为 C 中的结构。这在 verilog 中本机支持,可以通过 C 中的结构来实现。我如何在 MATLAB 中做类似的事情?
我想要做的是拥有 Q - 10 位和 C - 4 位并执行操作 -
Q,C = Q,C << 1
(左移 C 的 MSB 到 Q 的 LSB)
其中 Q,C 被 14 位视为 C 中的结构。这在 verilog 中本机支持,可以通过 C 中的结构来实现。我如何在 MATLAB 中做类似的事情?
我不认为 matlab 支持 c 风格的联合。它确实具有bitshift
使您能够使用算术解决此问题的功能。
% Q is 10 bits, C is 4 bits
% Create QC.
QC = bitshift(Q, 4) + C;
% Bit shift QC by 1
QC = bitshift(QC,1);
%Grab QC bits 13->4 and save as Q
Q = bitshift(QC, -4);
%get QC bits 3->0 and save as C
C = bitand(QC, 2^(4+1)-1);