EDA的VHDL程序:彩灯控制器,共16个彩灯,每次顺序点亮相邻四个彩灯,如此循环执行,循环方向可控制

EDA的VHDL程序:彩灯控制器,共16个彩灯,每次顺序点亮相邻四个彩灯,如此循环执行,循环方向可控制,第1张

library ieee

use ieee.std_logic_1164.all

use ieee.std_logic_unsigned.all

entity caideng is

port(clk,reset:in std_logic

l_r:in std_logic ----控制循环方向;

output:out std_logic_vector(15 downto 0))---输出

end entity

architecture art of caideng is

signal q:std_logic_vector(15 downto 0)

signal clk_data:std_logic

begin

process(clk,reset)-----时钟分频,分频因子等于系统时钟频率除以所要得到的时钟频率

variable cnt:integer

begin

if reset='1' then

cnt:=0clk_data<='0'

elsif clk'event and clk='1' then

if cnt=4000000 then

cnt:=0clk_data<='1'

else clk_data<='0'cnt:=cnt+1

end if

end if

end process

process(clk_data,reset,l_r,q)

begin

if reset='1' then

q<="0000000000000000"

elsif clk_data'event and clk_data='1' then

if l_r='1' then ----表示向右循环;

if q="0000000000000000" then

q<="1111000000000000"

else q<=q(0)&q(15 downto 1)

end if

else ----向左循环

if q="0000000000000000" then

q<="0000000000001111"

else q<=q(14 downto 0)&q(15)

end if

end if

end if

output<=q

end process

end art

逻辑设计对电路结构的影响

还有一个使电路复杂化的原因是逻辑电路的输入项太多以致需占用过多的面积。我们从图3和图4两个相同功能的逻辑电路和他们对应的VHDL描述来分析。

比较两图可知,图3是二级逻辑门,每个输入信号与不只一个逻辑门相连,图4是三级的逻辑门,每个输入信号只与一逻辑门相连。由于级数少,延时也较少,因此图3的速度要比图4快。然而,由于图3的输入项要比图4大的多(10:5),因此,占用的面积必然也比图3大。图4是图3通过提取公因数(例中是B和C)得来的,这是把附加的中间项加到结构描述中去的一种过程,它使输入到输出中的逻辑级数增加,牺牲速度换来电路占用面积的减少。对于对延时要求不高的情况下采用这种方法分解逻辑电路以达到减少电路复杂度的目的。

通过以上简单、初步的探讨,我们可以知道,用VHDL进行集成电路的设计,牵涉到对VHDL语言的使用方法和对设计的理解程度。本文讨论了以下几个简化和优化电路设计的3个值得注意的方面:

(1)在用VHDL进行设计中要注意避免不必要的寄存器描述。

(2)在编写程序前要先对整个设计进行较深入的了解�科学的划分设计,多设想几种方案�再进行比较�用多个较少位数的单元取代较多位数的单元。

(3)在延时要求不高的情况下,可提取逻辑电路公因子�把它分解成含有中间变量的多级电路。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12023547.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存