guizhou university
eda实验报告。
实验课程名称 eda技术与实验。
实验项目名称vhdl实验。
学院科技学院。
专业班级 2010级电子信息科学与技术
学生姓名王斌。
学号 1020040464
任课教师李良荣。
十二进制同步计数器。
rest端用于清零,en端控制计数器工作,clk位时钟脉冲输入端,qa、qb、qc、qd为计数器的4位二进制计数值输出端。
变量。library ieee;
use use
entity count12 is
port (clk,reset, en: in std_logic;
qa,qb,qc,qd: out std_logic);
end count12;
architecture beh**e of count12 is
begin
process(clk,reset)
variable count_4: std_logic_vector(3 downto 0);
beginif (reset='0') then
count_4:="0000";
elsif(clk'event and clk='1')then
if (en='1')then
if (count_4="1011")then
count_4:="0000";
elsecount_4:=count_4+'1';
end if;
end if;
end if;
qa<=count_4(0);
qb<=count_4(1);
qc<=count_4(2);
qd<=count_4(3);
end process;
end beh**e;
变量的赋值符号“:=程序中点蓝色字体)变量数值的改变是通过变量赋值来实现的。赋值语句右方的表达式必须是一个与目标具有相同的数据类型的数值,这个表达式可以是一个运算表达式,也可以是一个数值。
信号定义方法。
library ieee;
use use
entity count12 is
port (clk,reset, en: in std_logic;
qa,qb,qc,qd: out std_logic);
end count12;
architecture beh**e of count12 is
signal count_4: std_logic_vector(3 downto 0);
begin
qa<=count_4(0);
qb<=count_4(1);
qc<=count_4(2);
qd<=count_4(3);
process(clk,reset)
beginif (reset='0') then
count_4<="0000";
elsif(clk'event and clk='1')then
if (en='1')then
if (count_4="1011")then
count_4<="0000";
elsecount_4<=count_4+'1';
end if;
end if;
end if;
end process;
end beh**e;
当信号定义了数据类型和表达方式后,在vhdl设计中就能对信号进行赋值了,格式:目标信号<=表达式。这里的表达式可以是一个运算表达式,也可以是数据对象(变量、信号或常量)。
软件**——以变量为例。
a、 运行。
单击软件上的按钮,编译通过—如图1-1
图1-1b、查看rtl图。
c、新建波形文件。
执行主菜单file下的new命令,在弹出的新建文件对话框中选择“other file”标签。选择途中的vector w**eform file。添加**信号。得**波形如图1—2
图1—2结果分析:从**波形来看,是二进制同步计数器设计通过,en和reset都必须是高电平的时候才工作,所以我设置的是整段都为高电平,qa、qb、qc、qd、它们都是在时钟脉冲来的时候,输出开始计数,从0000——1011(当到1100是复位)。(图中蓝线处清零)
3-8译码器。
3-8译码器(74ls138)是最常用的一种小规模集成电路,它有3个二进制输入端a、b、c和8个译码输出端y0-y7。对输入端a、b、c的每一组取值进行译码,就可以确定y0-y7的那一位变为低电平(有效),从而达到译码的目的。3-8译码器还有选通输入端g1、g2、g3,只有在g1=1,g2=0,g3=0时,3-8译码器才进行正常的译码,否则y0-y7输出将均为高电平。
library ieee;
use entity yimaqi is
port(a,b,c,g1,g2,g3:in std_logic;
y:out std_logic_vector(7 downto 0));
end yimaqi;
architecture beh**e38 of yimaqi is
signal indata: std_logic_vector (2 downto 0);
beginindata<=c&b&a;
process (indata,g1,g2,g3)
beginif(g1='1' and g2='0' and g3='0') then
case indata is
when"000"=>y<="11111110";
when"001"=>y<="11111101";
when"010"=>y<="11111011";
when"011"=>y<="11110111";
when"100"=>y<="11101111";
when"101"=>y<="11011111";
when"110"=>y<="10111111";
when"111"=>y<="01111110";
when others=>y<="xxxxxxxx";
end case;
elsey<="11111111";
end if;
end process;
end beh**e38;
a、运行。单击软件上的按钮,编译通过—如图1- 3
遇到的问题:①vhdl标识符必须以字母开头,不能以下划线和数字开头。②变量的赋值符号“:
=和信号赋值符“<=的区别(上面题中已经分析)。③注意case语句,常用来描述总线、编码、译码等的行为。
b、查看rtl图。
c、新建波形文件。
执行主菜单file下的new命令,在弹出的新建文件对话框中选择“other file”标签。选择途中的vector w**eform file。添加**信号。如图1-4
图1-4结果分析:在g1=1,g2=0,g3=0时,y0-y7输出和设计结果一样(低电平有效)。
总结:通过对vhdl语言的描述设计,把vhdl的软件设计与现实硬件挂钩,是软件转化为硬件电路的关键步骤。通过本次实验,我更加了解vhdl工具的强大作用,在今后的学习中,我会更进一步的去了解。
EDA作业
电子电路基础 eda作业。multisim的应用之晶体管放大器的设计与调测。本实验的主要目的是熟悉multisim软件的使用,包括电路图编辑,虚拟仪器仪表的使用和掌握常见电路分析方法。能够运用multisim软件对模拟电路进行设计和性能分析,掌握eda设计的基本方法和步骤。熟练掌握有关单级放大电路有...
EDA作业
山东交通学院。eda电路 设计软件。设计报告。班级电气111 姓名罗汉林。学号 110812135 专业电气工程及其自动化 学院信电学院。简易频率计数器的设计。设计说明。频率的测量实际上就是在1个单位时间内 通常1s 对信号脉冲进行计数,计数值就是信号频率。1.设计目标。用at89s51设计一个数显...
EDA作业
控制灯亮灭的一个eda程序 library ieee use use 以上三条语句引入可用的函数库。entity light is 定义实体,名为light port clk1 in std logic 程序仅有时钟信号这一个输入。light buffer std logic vector 7 do...