在行为级抽象建模的覆盖范围方面软语言比VHDL略差一些。
FPGA的硬件描述语言VHDL,超高速集成电路硬件描述语言,符合美国电气和电子工程师协会标准,利用一种和数字电路基本知识结合较密切的语言来描述数字电路和设计数字电路系统。
为适应实际数字电路的工作方式,VHDL以并行和顺序的多种语句方式来描述在同一时刻中所有可能发生的事件,因此VHDL程序执行方式与其他语言不同。
它不是按顺序一条一条执行每一条语句,而是有并行执行的语句同时也有按顺序执行的语句;要求数字电路设计人员摆脱一维的思维模式,以多维并发的思路来完成VHDL的程序设计。
扩展资料
软件语言和VHDL的共同点
1、能形象化地抽象表示电路的结构和行为。
2、支持逻辑设计中层次与领域的描述。
3、可借用高级语言的精巧结构来简化电路的描述。
4、具有电路仿真与验证机制以保证设计的正确性。
5、支持电路描述由高层到低层的综合转换。
6、硬件描述与实现工艺无关。
7、便于文档管理,易于理解和设计重用。
参考资料来源:百度百科—vhdl
vhdl分顺序执行语句和并行执行语句 有的书按分类介绍的if,case等语句 你可以看看
process到end process之间的语句属于顺序执行语句 就是从上到下,顺序执行
process之外的程序都是并行执行语句 就是同时执行
begin
process(clock)
if rising_edge(clock) then--顺序执行语句,你如果把process删了使用if语句的话,编 译器会报错
clk<=not clk;--顺序执行语句
end if;--顺序执行语句
end process;
clkout<=clk;--并行执行语句
end;
你要的程序应该是下面这样,分频没有做进去,逆的也没有做进去。
此程序已经经过Quartus130sp1翻译过了。
library IEEE;
use IEEESTD_LOGIC_1164ALL;
use IEEESTD_LOGIC_ARITHALL;
use IEEESTD_LOGIC_UNSIGNEDALL;
entity Zaehler is port(
clk : in std_logic;
a,b : in std_logic_vector (4 downto 0);
s0 : out std_logic_vector(6 downto 0);
s1 : out std_logic_vector(6 downto 0);
s2 : out std_logic_vector(6 downto 0);
s3 : out std_logic_vector(6 downto 0)
);
end Zaehler;
architecture logik of Zaehler is
--函数开始:将二进制数进行转化
function int_bin ( bin : std_logic_vector(4 downto 0) ) return std_logic_vector is
variable i : integer:=0;
variable bcd : std_logic_vector(7 downto 0) := (others => '0');
variable bint : std_logic_vector(4 downto 0) := bin;
begin
for i in 0 to 4 loop
bcd(7 downto 1) := bcd(6 downto 0);
bcd(0) := bint(4);
bint(4 downto 1) := bint(3 downto 0);
bint(0) :='0';
if(i < 4 and bcd(3 downto 0) > "0100") then
bcd(3 downto 0) := bcd(3 downto 0) + "0011";
end if;
if(i < 4 and bcd(7 downto 4) > "0100") then
bcd(7 downto 4) := bcd(7 downto 4) + "0011";
end if;
end loop;
return bcd;
end int_bin;
--函数结束
--结构开始
signal p: std_logic_vector(4 downto 0):= b;
begin
Clock: process(clk, a, b, p)
begin
if (clk'event and clk ='1') then
if (p <= a) then p <= p+"00001";
else p <= b;
end if;
end if;
end process Clock;
Zaehlung: process(p)
variable pbcd: std_logic_vector(7 downto 0):= (others => '0');
variable s0p: std_logic_vector(3 downto 0):= (others => '0');
variable s1p: std_logic_vector(3 downto 0):= (others => '0');
begin
pbcd := int_bin(p);
s0p:= pbcd(3 downto 0);
s1p:= pbcd(7 downto 4);
s2 <= "1000000";
s3 <= "1000000";
case s0p is
when "0000" => s0 <= "1000000";
when "0001" => s0 <= "1111001";
when "0010" => s0 <= "0100100";
when "0011" => s0 <= "0110000";
when "0100" => s0 <= "0011001";
when "0101" => s0 <= "0010010";
when "0110" => s0 <= "0000010";
when "0111" => s0 <= "1111000";
when "1000" => s0 <= "0000000";
when "1001" => s0 <= "0010000";
when others => s0 <= "0001110";
end case;
case s1p is
when "0000" => s1 <= "1000000";
when "0001" => s1 <= "1111001";
when "0010" => s1 <= "0100100";
when "0011" => s1 <= "0110000";
when "0100" => s1 <= "0011001";
when "0101" => s1 <= "0010010";
when "0110" => s1 <= "0000010";
when "0111" => s1 <= "1111000";
when "1000" => s1 <= "0000000";
when "1001" => s1 <= "0010000";
when others => s1 <= "0001110";
end case;
end process Zaehlung;
end logik;
采纳我啊将军!
以上就是关于与软件语言相比,VHDL有什么特点全部的内容,包括:与软件语言相比,VHDL有什么特点、这个VHDL小程序里的语句是按怎样的顺序执行的呢、VHDL 程序设计: 输入两个5位二进制数,要求在7段4位数码管上以十进制显示等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)