在VHDL中向逻辑_向量添加“1”
我试图在VHDL中向N长度的STD_逻辑_向量添加“1” 这是我第一次使用VHDL,所以我根本不知道如何在不构建全加器的情况下添加1,这似乎有点冗余 我们不允许再使用任何自由主义者,而不是代码中的自由主义者在VHDL中向逻辑_向量添加“1”,vhdl,Vhdl,我试图在VHDL中向N长度的STD_逻辑_向量添加“1” 这是我第一次使用VHDL,所以我根本不知道如何在不构建全加器的情况下添加1,这似乎有点冗余 我们不允许再使用任何自由主义者,而不是代码中的自由主义者 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY cnt IS GENERIC (n: natural :=3); PORT( clk: IN std
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY cnt IS
GENERIC (n: natural :=3);
PORT( clk: IN std_logic; -- clock
rst: IN std_logic; -- reset
cntNum: IN std_logic_vector(n-1 DOWNTO 0); -- # of counting cycles
cntOut: OUT std_logic_vector(n-1 DOWNTO 0) -- count result
);
END cnt;
architecture CntBhvArc OF cnt IS
signal counta : std_logic_vector(n-1 DOWNTO 0);
begin
process (clk, rst)
begin
if rst='1' then
counta<="0";
elsif (clk'event) and (clk='0') then
counta<= counta+'1';
end if;
cntOut<=counta;
end process;
END CntBhvArc
还有。。。有谁能为一个在编程方面经验很少的人指出一个VHDL totrial吗
谢谢您需要将std_逻辑_向量强制转换为无符号值,以便添加一个,然后将其强制转换回,以便将其分配给输出
这看起来像是一个家庭作业,所以我将让您确切地了解如何实现。您不应该使用库IEEE.STD\u LOGIC\u UNSIGNED.ALL
此库已弃用请参阅;用ieee.numeric\u std.all代替。回答你的最后一点-不要把它看作是编程。HDL代表硬件描述语言。在描述硬件时,请在编写代码时始终牢记: 我也写了很多。若这是家庭作业,你们被教导使用未签名的STD_逻辑,那个么我对教育机构感到绝望。这已经有好几年没有意义了 VHDL是强类型的,因此,如果count表示一个数字,并且使用这样的名称,那么最好是:,使用有符号或无符号向量,或者使用整数。整数不会在模拟中环绕,除非您创建它们。如果在它们处于最大值时向它们添加1,则模拟器将终止。向量类型确实如此。有时你想要一种行为,有时想要另一种 最后,我注意到:
elsif (clk'event) and (clk='0') then
哪一个写得更好:
elsif falling_edge(clk) then
同样,这种情况已经持续了大约一二十年。您是否打算使用下降沿-上升沿更常见