EDA作业

发布 2022-09-02 20:39:28 阅读 3922

控制灯亮灭的一个eda程序

library ieee;

use use 以上三条语句引入可用的函数库。

entity light is 定义实体,名为light

port (clk1: in std_logic; -程序仅有时钟信号这一个输入。

light: buffer std_logic_vector(7 downto 0));有8个标准矢量输出。

end light; 结束实体的定义。

architecture behv of light is 定义结构体。

constant len: integer:=7;

signal banner: std_logic:='0'; 定义信号banner为两种节拍转换信号。

signal clk,clk2: stc_logic; -信号clk,clk2作为辅助时钟。

begin

clk<=(clk1 and banner)or(clk2 and not banner); 信号输入的赋只用“《=输入信号或者是banner的两种节拍转换信号用clk1表示,或者是不是bunner用clk2表示。

process(clk1) 若信号类型属于是clk1则执行此程序。

beginif clk1'event and clk1='1'then 若clk1出现上升沿。

clk2<=not clk2; 则clk2 二分频,得clk2

end if;

end process; 结束此进程。

---该进程是将clk1二分频,得clk2

process(clk) 若信号是普通时钟信号。

variable flag: bit_vector(2 downto 0):=00";

beginclk<=(clk1 and banner)or(clk2 and not banner);

if clk'event and clk='1'then

if flag="000"then

light<='1'&light(len downto 1); 顺序循环移位。

if light(1)='1'then --依次点亮。

flag:="001";

end if;

---当flag="000"时,依次点亮八盏灯,当最后一盏灯被点亮, -将"001"赋给flag,启动熄灭部分的程序。

else if flag="001"then

light<=light(len-1 downto 1)&'0';

if light(6)='1'then

flag:="010";

end if;

---当flag="001"时,即八盏灯被点亮后,逆向依次熄灭八盏---灯,当全部熄灭后,将"010"赋给flag

elsif flag="010"then

light(len downto 4)<=light(len-1 downto 4)&'1';-从中间 ;向两边点。

light(len-4 downto 0)<=1'&light(len-4 downto 1);

if light(1)='1'then

flag:="011";

end if;

---当flag="010"时,灯从中间向两边点亮。

elsif flag="011"then

light(len downto 4)<=0'&light(len downto 5);-奇偶位循 ;环点亮。

light(len-4 downto 0)<=light(len-5 downto 0)&'0';

if light(2)='1'then

flag:="100";

end if;

---当flag="011"时,灯是奇偶位循环点亮。

elsif flag="100"then

light(len downto 4)<=1'&light(len downto 5);

light(len-4 downto 0)<=1'&light(len-4 downto 1);

if light(1)='1'then

flag:="101"; 全部熄灭。

end if;

---当flag="101"时,灯全部熄灭。

elsif flag="101"then

light<="00000000"

flag:="110"; 重新开始。

elsif flag="110"then

banner<=not banner; -banner信号转换,实现第二种节拍。

flag:="000";

end if;

end if;

end process;

end behv;

程序定义了一个变量flag作为标志,实现了几种状态的启动和停止的转换。

2.实现结果及感受:

八盏灯先依次点亮,接着,逆向依次熄灭,然后,从中间向两边点亮,再奇偶位循环点亮,再全部熄灭,最后重新开始,实现下一次的循环。此程序中clk二分频部分看不懂,其他基本能看懂60%。基本就是重复利用 if flag="000"then light<='1'&light(len downto 1);if light(1)='1'then --flag:

="001";这几条关键语句使灯按一定次序实现亮灭。

EDA作业

电子电路基础 eda作业。multisim的应用之晶体管放大器的设计与调测。本实验的主要目的是熟悉multisim软件的使用,包括电路图编辑,虚拟仪器仪表的使用和掌握常见电路分析方法。能够运用multisim软件对模拟电路进行设计和性能分析,掌握eda设计的基本方法和步骤。熟练掌握有关单级放大电路有...

EDA作业

山东交通学院。eda电路 设计软件。设计报告。班级电气111 姓名罗汉林。学号 110812135 专业电气工程及其自动化 学院信电学院。简易频率计数器的设计。设计说明。频率的测量实际上就是在1个单位时间内 通常1s 对信号脉冲进行计数,计数值就是信号频率。1.设计目标。用at89s51设计一个数显...

eda作业

eda综合作业。1 任务 设计vhdl模块,输入模块的时钟信号为50mhz,输出如以下参数的信号 周期为22.6us,占空比为75 2 方案 输入的信号周期t 1 50m 0.02us,输出的21.5us的信号用计数器来实现,并且占空比为75 那么。输出信号的低电平范围 t1 22.6 25 5.6...