急求!!!!!vhdl语言解释,越详细越好,我是一点看不懂。高手进。高悬赏!

--the control of AD7674
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY ad7674 IS
PORT ( clk,busy ,reset: IN STD_LOGIC;
db : IN STD_LOGIC_VECTOR(17 DOWNTO 0);
cs,rd,convst: OUT STD_LOGIC;
q:OUT STD_LOGIC_VECTOR(17 DOWNTO 0));
END ad7674;
ARCHITECTURE behv OF ad7674 IS
TYPE m_state IS (s0,s1,s2,s3);
SIGNAL present_state, next_state: m_state;
BEGIN
REG1: PROCESS (clk,reset) --时序进程1
BEGIN
IF reset='1' THEN
q<=(OTHERS=>'0');
convst<='1';
ELSIF clk='1' AND clk'EVENT THEN
present_state <= next_state;
END IF;
END PROCESS REG1;
COM:PROCESS(present_state, busy) --组合进程
BEGIN
CASE present_state IS
WHEN s0=>
convst<='1';
next_state<=s1;
WHEN s1 =>
convst<='0';
next_state<=s2;
WHEN s2 =>
convst<='1';
IF busy = '1' THEN
next_state <= s2;
ELSE
next_state <= s3;
END IF;
WHEN s3 =>
convst<='1';
q<=db;
next_state <= s0;
END case;
END PROCESS;
END behv;

VHDL简介
VHDL 的英文全名是 Very-High-Speed Integrated Circuit Hardware Description Language,诞生于 1982 年。1987 年底,VHDL被 IEEE 和美国国防部确认为标准硬件描述语言。 VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
编辑本段VHDL语言的特点
VHDL 语言能够成为标准化的硬件描述语言并获得广泛应用 , 它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来 ,VHDL 语言主要具有以下优点:[1] (1) VHDL 语言功能强大 , 设计方式多样 VHDL 语言具有强大的语言结构, 只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时, 它还具有多层次的电路设计描述功能。此外 ,VHDL 语言能够同时支持同步电路、异步电路和随机电路的设计实现, 这是其他硬件描述语言所不能比拟的。VHDL 语言设计方法灵活多样 , 既支持自顶向下的设计方式, 也支持自底向上的设计方法; 既支持模块化设计方法, 也支持层次化设计方法。 (2) VHDL 语言具有强大的硬件描述能力 VHDL 语言具有多层次的电路设计描述功能,既可描述系统级电路 , 也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。同时,VHDL 语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL 语言的强大描述能力还体现在它具有丰富的数据类型。VHDL 语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。 (3) VHDL 语言具有很强的移植能力 VHDL 语言很强的移植能力主要体现在: 对于同一个硬件电路的 VHDL 语言描述 , 它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。 (4) VHDL 语言的设计描述与器件无关 采用 VHDL 语言描述硬件电路时, 设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化, 而不需要考虑其他的问题。当硬件电路的设计描述完成以后 ,VHDL 语言允许采用多种不同的器件结构来实现。 (5) VHDL 语言程序易于共享和复用 VHDL 语言采用基于库 ( library) 的设计方法。在设计过程中 , 设计人员可以建立各种可再次利用的模块 , 一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计 , 而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块, 将这些模块存放在库中 , 就可以在以后的设计中进行复用。 由于 VHDL 语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言 , 因此它可以使设计成果在设计人员之间方便地进行交流和共享, 从而减小硬件电路设计的工作量, 缩短开发周期。词条图册更多图册
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-12
其实楼上的答案很到位了 不过如果楼主是一点也不懂的新手 估计看起来还会有疑惑
我对VHDL的一些语法问题加以补充 逻辑的流程楼上解释的很清楚了
每个VHDL文件可以看成是一个模型 主要由实体和结构体两大部分组成
--the control of AD7674
library IEEE; --库说明
use IEEE.STD_LOGIC_1164.all;
entity ad7674 is --这是实体部分 定义了输入输出接口
port (clk, busy , reset : in std_logic; --clk是同步时钟 reset重置
db : in std_logic_vector(17 downto 0); --DATA接口
cs, rd, convst : out std_logic;
q : out std_logic_vector(17 downto 0));
end ad7674; --实体定义结束

architecture behv of ad7674 is --此处开始结构体部分 功能描述部分

type m_state is (s0, s1, s2, s3); --定义了一个枚举类型m_state 它有四个值s0...s4
signal present_state, next_state : m_state; --定义两个m_state类型的信号量 有点像变量 但是有不同的 楼主先

这么理解吧

begin
REG1 : process (clk, reset) --时序进程1 进程process是结构体中一个重要成分
--如果括号里的信号称为敏感信号(这里是clk reset)有变动
--比如从1到0 就执行这个进程
--VHDL语言因为是硬件描述语言
--所以每句话都是并行的 只有写在进程里的语句才是顺序执行的 简单的说
--看进程里的程序和高级语言(比如C)是一样的
begin --进程开始
if reset = '1' then --如果复位信号reset是高电平有效的 q清零(就是18个0),convst拉高
q <= (others => '0');
convst <= '1';
present_state <= S0; -- 一般都要有这么一句复位清状态机的
elsif clk = '1' and clk'event then --如果是时钟上升沿
present_state <= next_state; -- 状态机跳转 当前状态改成下一时刻的状态
end if;
end process REG1; --进程一结束

COM : process(present_state, busy) --组合进程 进程的敏感信号为present_state, busy
begin
case present_state is --相当于C语言里的switch case 如果present_state的值为...就...
when s0 => -- 如果present_state的值为s0 则拉高convst,继续跳转到s1
convst <= '1';
next_state <= s1; --当前状态变为下一状态
when s1 => -- s1状态拉低convst,继续跳转到s2
convst <= '0';
next_state <= s2;
when s2 => -- s2状态拉高convst,并且根据busy信号进行跳转,当busy为低的时候跳转到s3,否

则不跳转
convst <= '1';
if busy = '1' then --if else 语句 不用解释吧...如果...就...
next_state <= s2;
else
next_state <= s3;
end if;
when s3 => -- s3状态将转换结果db送到端口q上,并且跳转回s0状态,到此一次转换过程已经完成

了,回到s0重新开始状态机
convst <= '1';
q <= db;
next_state <= s0;
end case;
end process;
end behv;
第2个回答  2011-04-12
这是一个adi的adc控制时序,比较简单,下面我写了一些注释,你看看吧
--the control of AD7674
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity ad7674 is
port (clk, busy , reset : in std_logic;
db : in std_logic_vector(17 downto 0);
cs, rd, convst : out std_logic;
q : out std_logic_vector(17 downto 0));
end ad7674;

architecture behv of ad7674 is

type m_state is (s0, s1, s2, s3);
signal present_state, next_state : m_state;

begin
REG1 : process (clk, reset) --时序进程1
begin
if reset = '1' then -- 复位时q清零,convst拉高
q <= (others => '0');
convst <= '1';
present_state <= S0; -- 一般都要有这么一句复位清状态机的
elsif clk = '1' and clk'event then
present_state <= next_state; -- 状态机跳转
end if;
end process REG1;

COM : process(present_state, busy) --组合进程
begin
case present_state is
when s0 => -- s0状态拉高convst,继续跳转到s1
convst <= '1';
next_state <= s1;
when s1 => -- s1状态拉低convst,继续跳转到s2
convst <= '0';
next_state <= s2;
when s2 => -- s2状态拉高convst,并且根据busy信号进行跳转,当busy为低的时候跳转到s3,否则不跳转
convst <= '1';
if busy = '1' then
next_state <= s2;
else
next_state <= s3;
end if;
when s3 => -- s3状态将转换结果db送到端口q上,并且跳转回s0状态,到此一次转换过程已经完成了,回到s0重新开始状态机
convst <= '1';
q <= db;
next_state <= s0;
end case;
end process;
end behv;本回答被提问者和网友采纳

急求!!!vhdl语言解释,越详细越好,我是一点看不懂。高手进。高悬赏!
VHDL 语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。 (3) VHDL 语言具有很强的移植能力 VHDL 语言很强的移植能力主要体现在: 对于同一个硬件电路的 VHDL 语言描述 , 它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合...

悬赏关于VHDL里clk’event的问题,请高手解答,满意追加赏金,谢谢!
可能你没有学习过数字电路,在语言编译实际生产的数字电路中,如果是电平触发的编译出来的是触发器,如果是边沿触发编译出来的是寄存器,触发器有很多坏处,比方说不稳定,对毛刺敏感,容易形成锁存电路等等。如果不好理解的话可以举个例子看下;例如 a<=b;b<=c;1、如果是边沿触发,那么a的值永远比b...

【急】答对必有重谢!有关于用VHDL语言对HDB3码译码器的程序的解释
end rtl;结束rtl 你主要看中间的那些if嵌套语句。主要就是选择性的赋值输出。满足某个条件就执行相应的赋值语句

如何用vhdl语言设计5进制减法计数器,我没悬赏分了。。。
很简单的,计数器进程部分程序给你,其他的分频的,显示的部分你能行的 signal cq: intger ranger 0 to 5 process(clk)begin if lck' event and clk='1' then if cq=0 then cq<=5 else cq<=cq-1;end if;end if;end process;

相似回答