Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/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 如果计数>;=A……计数<;=计数+;1._Vhdl - Fatal编程技术网

Vhdl 如果计数>;=A……计数<;=计数+;1.

Vhdl 如果计数>;=A……计数<;=计数+;1.,vhdl,Vhdl,我正在尝试为使用重复加法的乘法器编写VHDL代码。这是我写的代码: library ieee; use ieee.numeric_std.all; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity FinalProjectDLL is port ( CLOCK_50, reset : IN std_logic; A, B : IN std_log

我正在尝试为使用重复加法的乘法器编写VHDL代码。这是我写的代码:

library ieee; 
use ieee.numeric_std.all;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity FinalProjectDLL is
port (
CLOCK_50, reset : IN std_logic;
A, B : IN std_logic_vector (3 downto 0);
pl, ph, A_disp, B_disp: OUT std_logic_vector (6 downto 0));
end FinalProjectDLL;

architecture behavior of FinalProjectDLL is
type state_type is (s1, s2, s3);
signal state : state_type;

constant delay : integer := 100000000000000000;
constant halfdelay : integer :=delay/2;         
signal count_clock : integer range 0 to delay;
signal clock : std_logic;
signal count : integer;
signal in_project_product: integer;
signal Ai : integer;
signal Bi : integer;

begin
Ai <= conv_integer(A);
Bi <= conv_integer(B);

multi_crtl : process (clock, reset)
begin
if(reset = '0') then
count <= 0;
state <= s1;
elsif(clock'event and clock = '1') then
case state is

when s1 =>    
in_project_product <= 0;
state <= s2;

when s2 =>
if count <= Ai then
in_project_product <= in_project_product + Bi;
count <= count + 1; --VERY WORRIED
state <= s2;
else
state <= s3;
end if;

when s3 =>
pl <= conv_std_logic_vector (in_project_product, 7);
ph <= conv_std_logic_vector(in_project_product, 7);
A_disp <= conv_std_logic_vector(Ai, 7);
B_disp <= conv_std_logic_vector(Bi, 7);
state <= s1;

end case;
end if;
end process; 

clock_divide: process
begin 
wait until clock_50'event and clock_50 = '1';
if count_clock < delay then 
count_clock <= count_clock + 1;
else 
count_clock <= 0;
end if;
if count_clock <  halfdelay then
clock <= '0';
else
clock <= '1';
end if;
end process;

end 
ieee库;
使用ieee.numeric_std.all;
使用ieee.std_logic_1164.all;
使用ieee.std_logic_arith.all;
使用ieee.std_logic_unsigned.all;
实体FinalProjectDLL是
港口(
时钟50,复位:在标准逻辑中;
A、 B:标准逻辑向量(3到0);
pl,ph,A_disp,B_disp:OUT标准逻辑向量(6到0);
最终项目DLL;
FinalProjectDLL的体系结构行为是
类型状态_类型为(s1、s2、s3);
信号状态:状态_型;
常数延迟:整数:=1000000000000000;
常数半延迟:整数:=延迟/2;
信号计数时钟:从0到延迟的整数范围;
信号时钟:标准逻辑;
信号计数:整数;
_项目_产品中的信号:整数;
信号Ai:整数;
信号Bi:整数;
开始

Ai欢迎使用堆栈溢出
count
将在每个时钟周期增加一次,因为它位于行
elsif(时钟事件和时钟='1')之后,然后在顺序过程中增加一次。然而,我的建议是模拟它,看看会发生什么。1000000000000000的文字超出大多数VHDL工具的范围,特别是对于整数范围为-2147483647到+2147483647的合成。也许你能告诉我们这个设计是做什么的
延迟
表示
时钟50
(大概50 MHz)与
时钟
的比率,1000000000000000表示非常慢的
时钟
。最后一个
结束后缺少分号,IEEE软件包数值\u标准未使用,与Synopsys软件包标准逻辑\u arith和标准逻辑\u unsigned不兼容。模拟。感谢所有的输入家伙!正如您在上面提到的user1155120(我们将其更改为5),它最终对文本进行了轻微修改。我们还稍微修改了第一个状态。马修,谢谢你的澄清。我真的很担心代码可能会因此而无法工作。欢迎使用堆栈溢出
count
将在每个时钟周期增加一次,因为它位于行
elsif(时钟事件和时钟='1')之后,然后在顺序过程中增加一次。然而,我的建议是模拟它,看看会发生什么。1000000000000000的文字超出大多数VHDL工具的范围,特别是对于整数范围为-2147483647到+2147483647的合成。也许你能告诉我们这个设计是做什么的
延迟
表示
时钟50
(大概50 MHz)与
时钟
的比率,1000000000000000表示非常慢的
时钟
。最后一个
结束后缺少分号,IEEE软件包数值\u标准未使用,与Synopsys软件包标准逻辑\u arith和标准逻辑\u unsigned不兼容。模拟。感谢所有的输入家伙!正如您在上面提到的user1155120(我们将其更改为5),它最终对文本进行了轻微修改。我们还稍微修改了第一个状态。马修,谢谢你的澄清。我真的很担心代码可能因此无法工作。