给定一个位数,我试图在std_logic_vector中设置该位。这是为了一次切换一个时钟输出。VHDL给定位数,是否有更清晰的方法来设置特定位?
首先,我已经完全放弃了sll或SHIFT_LEFT这似乎是明显的做法,但完全不起作用。
variable v_cmd_clk_1: std_logic_vector(11 downto 0);
...
--- set bit number "s_proc_chan", plus 4, in v_cmd_clk_1
v_cmd_clk_1 := "0000" & "0000" & "0000";
v_cmd_clk_1(to_integer (unsigned(s_proc_chan(2 downto 0))) + 4 ) := '1';
...
-- And then later on in the process assign it to an actual signal
cmd_clk <= v_cmd_clk_0;
是否有更好或更干净的语法来做到这一点?
谢谢。
如果你经常处理难看的类型转换那么现在是时候,如果你使用的是正确类型的信号进行评估。 's_proc_chan'可能更适合作为'无符号'或整数记录元素,而不是更大矢量的片段。 – 2015-04-06 16:45:57