vhdl编程
VHDL语言是用来描述硬件的语言,通常用于CPLD和FPGA的硬件程序设计
VHDL语言的编译环境可由所用芯片厂商提供,如ALTERA公司的QuartusII等软件,还可由第三方综合软件来进行编译如Synplify等。
一般一些嵌入式系统设计,fpga设计,等书籍里有相关的介绍
‘贰’ 什么是VHDL语言,有什么用
VHDL的英文全名是Very-High-Speed Integrated Circuit HardwareDescription Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言 。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。
VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点
‘叁’ 如何用VHDL语言编程基本RS触发器……
根据真值表的描述结合VHDL编程思想很好实现你想要的程序;
程序并不难,关键是你用心的程度;
我猜你也许也是一名我的同行……
自己的努力才是过硬的本领!!!!
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY RS_clk IS
PORT( S,R,res :IN std_logic;
Q,NOT_Q:out std_logic);
END RS_clk;
ARCHITECTURE behav OF RS_clk IS
signal sel1,sel2: std_logic;
BEGIN
process(res,sel1,sel2)
begin
if res='0' then sel1<='0';
sel2<='1';
elsif (S='1' and R='0') then sel1<='1';
sel2<='0';
elsif (S='0' and R='1') then sel1<='0';
sel2<='1';
elsif (S='0' and R='0') then sel1<=sel1;
sel2<=sel2;
end if;
Q<=sel1;
NOT_Q<=sel2;
end process;
END behav;
‘肆’ 怎么使用VHDL语言编程
1:把你想实现的目标用vhdl写好2:然后再在quartusII中编译没错的话3:建立波形文件4:仿真
通过了就说明你的程序基本没问题但也不一定因为这是没加实际电路的延迟所以5:在实际板子上验证然后调试成功的话就ok了
‘伍’ vhdl怎么编程 和其他面向对象的高级语言思路一样吗
VHDL是面向硬件的编程,和其他高级语言思路不太一样。VHDL语言要求对硬件要熟悉,知道代码和硬件结构的对应关系,这样才能写出综合结果较好的程序,比如综合出来的电路逻辑门比较少。所以VHDL代码不能随意写,有些符合语法规则的代码有可能综合出来一个很坏的电路。
其它高级语言就没有这样的问题,只要符合语法,能实现功能,基本就可以接受了。
这有一篇关于硬件描述代码的文章建议看一下,会有帮助的:http://www.52rd.com/Blog/Detail_RD.Blog_Olive_2492.html
‘陆’ 用VHDL语言编程~急~
1. signal cnt:std_logic_vector(4 downto 0);
process(clk)
if clk'event and clk='1' then
if cnt="2100" then
cnt<="1000";
jinwei<='1';
else cnt<=cnt+1;
end if ;
end if;
end process;
6、b(3)=1;b(0)=0
‘柒’ vhdl编程
我看了你的编程程序,几千字的文章。我都吓了一大跳。你也真能写。看来你是急疯了。你就挑主要的内容输送到网页中。进行搜索。民间高手们肯定帮你。
‘捌’ VHDL语言编程,求救,求救,求救。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity cxjc is
port(cp,cx:in std_logic;
y:out std_logic);
end cxjc;
architecture rtl of cxjc is
type state is (s0,s1,s2,s3);
signal n:state;
begin
process(cp,cx)
begin
if cp'event and cp='1' then
case n is
when s0 => if cx='1' then
n<=s1; y<='0';
else n<=s0; y<='0'; end if;
when s1 => if cx='1' then
n<=s2; y<='0';
else n<=s0; y<='0'; end if;
when s2 => if cx='0' then
n<=s3; y<='0';
else n<=s0; y<='0'; end if;
when s3 => if cx='1' then
n<=s0; y<='1';
else n<=s0; y<='0'; end if;
when others=>null;
end case;
end if;
end process ;
end rtl;
这是以前用VHDL语言写的一个数字序列检测器,当检测到“1101”时,则y输出一个高电平。
根据你的情况,可以把四位检测位改到八位,道理一样。可以把输出Y接到LED1的正端。在仿真时,CLK设置为1KHZ就可以了。
其它功能嘛,谈谈我的想法。在process开始的地方,用一个IF语句加一个使能端S1;然后,至于数码管的驱动,我不知道你用的是共阴的、共阳的,还是BCD码,还有,你要用几位数显示错误码的个数,它们的驱动方式是不一样的。共阴的,高电平有效;共阳的,低电平有效;要是BCD码驱动的,就简单了,可以直接显示出你的二进制数。一位的简单,多位数的要用到扫描程序。
希望对你有用,祝你早日做成功。