Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vhdl 如何添加';0';在逻辑向量的每2位之间_Vhdl_Fpga - Fatal编程技术网

Vhdl 如何添加';0';在逻辑向量的每2位之间

Vhdl 如何添加';0';在逻辑向量的每2位之间,vhdl,fpga,Vhdl,Fpga,假设我们有一个32位的数据std\u逻辑\u向量。我想在每2位之间添加一个逻辑'0'。 例如,;所有的11111….1111都将是101010101….1010101。您可以使用以下函数在两者之间添加'0': 函数add_zero(std_logic_vector_in:std_logic_vector)返回std_logic_vector为 变量std_logic_vector_out:std_logic_vector(std_logic_vector_in'length*2-2向下至0);

假设我们有一个32位的数据
std\u逻辑\u向量。我想在每2位之间添加一个逻辑
'0'

例如,;所有的
11111….1111
都将是
101010101….1010101。

您可以使用以下函数在两者之间添加
'0'

函数add_zero(std_logic_vector_in:std_logic_vector)返回std_logic_vector为
变量std_logic_vector_out:std_logic_vector(std_logic_vector_in'length*2-2向下至0);
开始
对于标准逻辑中的i,范围循环中的向量
标准逻辑向量输出(i*2):=标准逻辑向量输入(i);
如果(i/=std_逻辑_向量_in'length-1),则
标准逻辑向量输出(i*2+1):=“0”;
如果结束;
端环;
返回标准逻辑向量输出;
末端功能;
对于最后的
'0'
,您可以通过简单的连接添加它们

如果您有:

信号初始信号:标准逻辑向量(31向下至0);
信号最终信号:标准逻辑向量(66向下至0);
然后你可以写:

final_signal   <= '0' & '0' & '0' & '0' & add_zeros(initial_signal);

final_信号您的输出应该有多大,64位?@giampiteroseu总共67位。最后4位(63到66)将是“0”,认为这没什么大不了的,但想不出如何在它们之间添加“0”您的描述我想在每2位之间添加逻辑“0”表示您想添加31个“0”(介于之间)。你的描述是错误的还是公认的答案?我知道你所做的,我想知道这不能在一个时钟的过程中完成吗?进程内的循环也是如此。@huytergan我不确定你在问什么,如果这是你的问题,你可以在时钟进程内使用该函数。我明白了,非常感谢!