电子EDA实验报告
更新时间:2024-06-03 18:22:01 阅读量: 综合文库 文档下载
《电子EDA技术》
实验报告
题 目:院 (系):专 业:组 长:授课教师:完成日期:实验四
电子EDA技术实验报告 信息科学与技术学院
电子信息工程
2011年09月24日
基于VHDL的触发器与锁存器描述
与设计
一、 实验目的:
1. 初步掌握VHDL语言的基本结构及设计的初步方法。 2. 掌握VHDL语言的时序电路的设计方法。 3. 掌握VHDL语言的基本描述语句的使用方法。
二、 实验原理:
1. 由LIBRARY引导的库的说明部分。 2. 使用了另一种数据类型STD_LOGIC。 3. 定义了一个内部节点信号SIGNAL。
4. 使用一种新的条件判断表达式:CLK′EVENT AND CLK=′1′
三、 实验内容:
1. 运用已学知识,设计边沿型D触发器,给出程序设计、软件编译、仿真分析及详细实验过程。
2. 设计D触发器(电平型触发时序元件),给出程序设计、软件编译、仿真分析及详细实验过程。
3. 分析比较上述两种触发器的仿真的实测结果,说明这两种电路的异同点。
四、 实验设计
VHDL程序:library ieee; use ieee.std_logic_1164.all; entity dff1 is
port(clk,d1:in std_logic;
q1:out std_logic); end;
architecture bhv of dff1 is signal qq:std_logic; begin process(clk,d1) begin
if clk='1' then qq<=d1; end if;
end process; q1<=qq; end;
五.编译仿真截图
六.心得体会
本次实验我们学会了D 触发器的工作原理及结构,在程序编译时出现错误,经过几次反复调试,解决了错误原因。通过实践,我们了解了边沿D触发器的工作原理。了解了VHDL语言的时序电路的设计方法,同时也加 强了动手操作能力,通过一次次的对仿真图编译,查找错误,我们加深了对eda编程的熟悉度,对后期eda 的学习打下了基础
实验五 基于VHDL语言的全加器设计与实现
一、实验目的
1、进一步掌握VHDL语言的几本结构及设计的输入方法。 2、掌握VHDL语言的组合逻辑电路的设计方法。 3、掌握全加器原理,并能进行多位加法器的设计。
4、掌握VHDL语言的基本描述语句特别是元件例化语句的使用方法。
二、实验原理
参考《EDA技术教程》 三、实验内容
1、编写VHDL语言程序实现1位加法器设计,给出程序设计、软件编译、仿真分析及详细实验过程。
2、设计并实现由8个1位二进制加法器级联而成的8位二进制加法器。8位加法器的顶层文件设计要求采用元件例化语句进行实现,并利用Max+PlusII开发软件对其进行编译和仿真。 四、程序 library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity adder8b is port(cin:in std_logic;
a,b:in std_logic_vector(7 downto 0); s:out std_logic_vector(7 downto 0); cout:out std_logic);
end adder8b;
architecture behav of adder8b is
signal sint,aa,bb:std_logic_vector(8 downto 0); begin
aa<='0'&a; bb<='0'&b; sint<=aa+bb+cin; s<=sint(7 downto 0); cout<=sint(8); end behav;
library ieee;
use ieee.std_logic_1164.all; entity f_adder is
port (ain,bin,cin:in std_logic; cout,sum:out std_logic); end entity f_adder;
architecture fd1 of f_adder is component h_adder port(a,b:in std_logic; co,so:out std_logic); end component; component or2a port(a,b:in std_logic;
c:out std_logic); end component;
signal d,e,f:std_logic; begin
u1:h_adder port map(a=>ain,b=>bin,co=>d,so=>e); u2:h_adder port map(a=>e,b=>cin,co=>f,so=>sum); u3:or2a port map(a=>d,b=>f,c=>cout); end architecture fd1;
library ieee;
use ieee.std_logic_1164.all; entity h_adder is port(a,b:in std_logic; co,so:out std_logic); end entity h_adder;
architecture fh1 of h_adder is begin
so<=not(a xor(not b)); co<=a and b;
end architecture fh1;
library ieee;
use ieee.std_logic_1164.all; entity or2a is
port(a,b:in std_logic; c:out std_logic); end entity or2a;
architecture one of or2a is begin c<=a or b;
end architecture one; 五、仿真图
心得体会:本次试验让我们掌握了全加器的原理,最重要的是我们掌握了由8个1位二进制加法器级联成8位二进制加法器的方法。同时学会了VHDL语言的基本描述语句特别是元件例化语句的使用方法。本次试验还算顺利,中间出了点小问题,最后还是在全组的努力下解决了问题。让我们更加懂得合作精神。
实验六 基于VHDL语言的分频设计与实现
一、实验目的
1、进一步掌握VHDL语言的基本结构及设计的输入方法
2、掌握VHDL基本逻辑电路的综合设计应用
二、实验原理
在数字电路系统中,分频电路应用得到十分广泛。例如,工程人
员常常使用分频电路来得到数字通信中的帧头信号、选通信号以及中断信号等。因此,分频电路在数字电路系统的设计中也应该作为重要的基本电路来掌握,从而给今后的一些设计带来方便。
三、实验内容
1.设计并实现一个6分频电路,要求其输出信号的占空比为50%。请分析分频电路设计原理并编写VHDL语言程序,利用Max*Plus2开发软件对其进行编译和仿真。
2.源代码 library ieee;
use ieee.std_logic_1164.all; --use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity clk_div6 is
port( clk: in std_logic; clk_out: out std_logic); end clk_div6;
architecture rtl of clk_div6 is signal clk_temp: std_logic; begin
process(clk)
variable counter: integer range 0 to 15;
constant md:integer:=2; begin
if clk'event and clk='1' then if counter=md then counter:=0;
clk_temp<=not clk_temp; else
counter:=counter+1; end if; end if; end process; clk_out<=clk_temp; end rtl;
library ieee;
use ieee.std_logic_1164.all; --use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity clk_div16 is
port( clk: in std_logic; clk_out: out std_logic);
end clk_div16;
architecture rtl of clk_div16 is signal clk_temp: std_logic; begin
process(clk)
variable counter: integer range 0 to 15; constant md:integer:=14; begin
if (clk'event and clk='1') then if counter=md or clk_temp='1'then counter:=0;
clk_temp<=not clk_temp; else
counter:=counter+1; end if; end if; end process; clk_out<=clk_temp; end rtl;
四、 运行结果
五、心得体会
在本实验中,由于我们对课本知识了解的不够透彻,对软件认知度不够强,我们遇到了很多的困难, 通过团队协商和老师的帮助指导,最终问题都克服了,本实验我们掌握了vhdl基本逻辑电路的综合设计应 用,看这最终做出的成功,加强了我们对这门课学习的兴趣。
实验七 时序逻辑移位寄存器的设计与
实现
一、 实验目的:
1. 进一步掌握VHDL语言的基本结构机设计的输入方法。 2. 掌握VHDL语言的时序逻辑电路的设计方法。
3. 掌握VHDL语言的基本描述语句特别是元件例化语句的使用方法。
二、 实验原理:
当CLK的上升沿到来时进程被启动,如果这时预置使能LOAD为高电平,则将输入端口的8位二进制数并行置入移位寄存器中,作为串行右移输出的初始值。
三、 实验内容:
1、 设计并实现一个带有同步并行预置功能的8位右移移位寄
存器。要求根据移位寄存器的设计原理编写此移位寄存器的
VHDL语言程序,并利用Max+PlusII开发软件对其进行编译和仿真。
2、 以移位寄存器为底层文件,设计由移位相加原理实现的8
位乘法器。此外,底层文件还应包括选通与门模块、8位加法器模块、16位锁存器模块等。其顶层文件设计要求采用元件例化语句进行实现,并利用Max+PlusII开发软件对其进行编译和仿真。
四、 实验设计
library ieee;
use ieee.std_logic_1164.all; entity sreg8b is
port(clk,load:in std_logic;
din:in std_logic_vector(7 downto 0); qb:out std_logic); end sreg8b;
architecture behav of sreg8b is
signal reg8:std_logic_vector(7 downto 0); begin
process (clk,load) begin
if clk'event and clk='1' then if load='1' then reg8<=din;
else reg8(6 downto 0)<=reg8(7 downto 1); end if; end if; end process; qb<=reg8(0); end behav;
五.编译仿真截图
六.心得体会
通过本实验,我们锻炼了上机实践能力,加强了对课本知识的学习认知,掌握了vhdl语言的时序逻辑电路 的设计方法,掌握了vhdl语言的基本结构设计的输入方法,通过一次次的修改,我们加
深了带有同步并行预置功能的8位右移移位寄存器的工作原理。
实验八 汽车尾灯控制器设计与实现
一、实验目的
1、进一步掌握VHDL语言的基本结构及设计的输入方法
2、掌握自顶向下设计方法 3、掌握层次化设计混合编程方法
二、实验原理
1、假设汽车尾部左右两侧各有3盏指示灯,其控制功能应包括: (1)汽车正常行驶时指示灯都不亮。 (2)汽车右转弯时,右侧的一盏指示灯亮。 (3)汽车左转弯时,左侧的一盏指示灯亮。 (4)汽车刹车时,左右两侧的一盏指示灯同时亮。
(5)汽车在夜间行驶时,左右两侧的一盏指示灯同时一直亮,供照明使用。
三、实验内容
1、根据系统设计要求,系统设计采用自顶向下的设计方法,顶层设
计采用原理图设计方式,它由时钟分频模块、汽车尾灯主控模块、左边灯控制模块和右边灯控制模块四部分组成。系统设计原理图如下图所示:
系统的输入信号包括:系统时钟信号CLK,汽车左转弯控制信号LEFT,汽车右转弯控制信号RIGHT,刹车信号BRAKE,夜间行驶信号NIGHT。系统的输出信号包括:汽车左侧3盏指示灯LD1,LD2,LD3和汽车右侧3盏指示灯RD1,RD2,RD3.
系统工作原理为:当汽车正常行驶时所有指示灯都不亮;汽车右转弯时,汽车右侧的指示灯RD1亮;汽车左转弯时,左侧的指示灯LD1亮;汽车刹车时,汽车右侧的指示灯RD2和左侧的指示灯LD2同时亮。当汽车在夜间行驶时,汽车右侧的指示灯RD3和左侧的指示灯LD2同时一直亮。 3、 VHDL源代码
(1)时钟分频模块的VHDL源程序(SZ.VHD)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SZ IS
PORT(CLK: IN STD_LOGIC; CP: OUT STD_LOGIC); END ENTITY SZ;
ARCHITECTURE ONE OF SZ IS
SIGNAL COUNT: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(CLK) BEGIN
IF CLK'EVENT AND CLK='1' THEN COUNT<=COUNT+1; END IF; END PROCESS; CP<=COUNT(3);
END ARCHITECTURE ONE;
(2)汽车尾灯主控模块的VHDL源程序(CTRL.VHD)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY CTRL IS
PORT(LEFT,RIGHT,BRAKE,NIGHT: IN STD_LOGIC; LP,RP,LR,BRAKE_LED,NIGHT_LED:OUT STD_LOGIC); END ENTITY CTRL;
ARCHITECTURE ONE OF CTRL IS BEGIN
NIGHT_LED<=NIGHT; BRAKE_LED<=BRAKE; PROCESS(LEFT,RIGHT)
VARIABLE TEMP: STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN
TEMP:=LEFT & RIGHT; CASE TEMP IS
WHEN \WHEN \WHEN \WHEN OTHERS => LP<='0'; RP<='0'; LR<='1'; END CASE; END PROCESS;
END ARCHITECTURE ONE;
(3)左边灯控制模块的VHDL源程序(LC.VHD) LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY LC IS
PORT(CLK,LP,LR,BRAKE,NIGHT: IN STD_LOGIC; LEDL,LEDB,LEDN: OUT STD_LOGIC); END ENTITY LC;
ARCHITECTURE ONE OF LC IS BEGIN LEDB<=BRAKE; LEDN<=NIGHT; PROCESS(CLK,LP,LR) BEGIN
IF CLK'EVENT AND CLK='1' THEN IF(LR='0') THEN IF(LP='0') THEN LEDL<='0'; ELSE LEDL<='1'; END IF; ELSE LEDL<='0'; END IF; END IF; END PROCESS;
END ARCHITECTURE ONE;
(4)左边灯控制模块的VHDL源程序(RC.VHD) LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY RC IS
PORT(CLK,RP,LR,BRAKE,NIGHT: IN STD_LOGIC; LEDR,LEDB,LEDN: OUT STD_LOGIC); END ENTITY RC;
ARCHITECTURE ONE OF RC IS BEGIN LEDB<=BRAKE; LEDN<=NIGHT; PROCESS(CLK,RP,LR) BEGIN
IF CLK'EVENT AND CLK='1' THEN IF(LR='0') THEN IF(RP='0') THEN LEDR<='0'; ELSE LEDR<='1'; END IF; ELSE
LEDR<='0'; END IF; END IF; END PROCESS;
END ARCHITECTURE ONE; 5)“与门”控制模块
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY AND2A IS
PORT (a, b :IN STD_LOGIC; c : OUT STD_LOGIC ); END ENTITY AND2A;
ARCHITECTURE one OF AND2A IS BEGIN
c <= a AND b ; 6)输出模块
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY CD IS
PORT (CLK,LEFT,RIGHT,BRAKE,NIGHT : IN STD_LOGIC; LD1,LD2,LD3,RD1,RD2,RD3
:
OUT
( END ARCHITECTURE ONE; (STD_LOGIC );
END ENTITY CD;
ARCHITECTURE ONE OF CD IS COMPONENT LC
PORT(CLK,LP,LR,BRAKE,NIGHT: IN STD_LOGIC; LEDL,LEDB,LEDN: OUT STD_LOGIC); END COMPONENT ; COMPONENT RC
PORT(CLK,RP,LR,BRAKE,NIGHT: IN STD_LOGIC; LEDR,LEDB,LEDN: OUT STD_LOGIC); END COMPONENT; COMPONENT SZ
PORT(CLK: IN STD_LOGIC; CP: OUT STD_LOGIC); END COMPONENT; COMPONENT CTRL
PORT(LEFT,RIGHT,BRAKE,NIGHT: IN STD_LOGIC; LP,RP,LR,BRAKE_LED,NIGHT_LED:OUT STD_LOGIC); END COMPONENT ; COMPONENT AND2A
PORT (a, b :IN STD_LOGIC; c : OUT STD_LOGIC );
END COMPONENT ;
SIGNAL d,e,f,g,h,i,j,k: STD_LOGIC; BEGIN u1
:
CTRL
PORT
MAP
( LEFT=>LEFT,RIGHT=>RIGHT,BRAKE=>BRAKE,NIGHT=>NIGHT,LP=>g,RP=>h,LR=>i,BRAKE_LED=>j,NIGHT_LED=>k );
u2 : SZ PORT MAP ( CLK => CLK,CP => d);
u3 : LC PORT MAP ( LP=>g,LR=>i,BRAKE=>j,NIGHT=>k, CLK => CLK,LEDL=>e ,LEDB => LD2,LEDN => LD3 );
u4 : RC PORT MAP ( RP=>h,LR=>i,BRAKE=>j,NIGHT=>k,CLK => CLK,LEDR => f,LEDB => RD2,LEDN => RD3 );
u5 : AND2A PORT MAP ( a=>d,b => e,c => LD1 ); u6 : AND2A PORT MAP ( a => d,b=> f,c => RD1); END ARCHITECTURE ONE;
四、 运行结果
五、心得体会
本次试验内容较长,在编译的时候遇到很多困难,经常出错,经
过反复调试,最后还是得到了结果。本次试验我们学会了层次化设计混合编程方法,进一步的了解了自顶向下的设计方法。掌握了在编程时候一些逻辑控制关系。比如汽车尾灯,在某一时刻,只能有一个逻辑关系。虽然遇到困难,但是我们还是有信心去解决困难。
正在阅读:
电子EDA实验报告06-03
高校毕业生就业见习管理办法(参考文本)11-06
【精选5份合集】安徽省巢湖市2022-2022学年高二化学下学期期末监04-14
苏教版六年级数学上册应用题05-04
新闻宣传工作方案word版本(3页)03-03
会计继续教育考试题库05-31
理论力学 期末考试试题 A卷汇总06-27
发票遗失证明02-10
新材料作文猎人和弓写作指导及范文04-27
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 实验
- 报告
- 电子
- EDA
- 2016年希望杯培训100题
- 新人教版2012-2013八年级物理上学期期末试题22
- 2018年中国重铬酸铵发展现状与市场前景分析(目录) - 图文
- 九年级数学总复习第四部分 图形的认识和证明
- 餐饮部岗前培训资料
- 新教材苏教版二年级下册第六单元两三位数的加法和减法
- 2013~2014学年第一学期期中教学质量调研测试 - 图文
- 宁夏理工学院信息中心网络工程监理方案
- 2019年上海青少年健康教育主题活动 - 图文
- 汽车倒车防撞报警器毕业设计解读 - 图文
- 冲压模具设计课程设计
- 国家森林公园旅游基础建设可行性研究报告
- 常州市春江镇人民医院施工组织设计
- SPSS和STATA软件运行步骤 - 图文
- 社区工作者初级实务2012(总)
- 山东省绿色建筑设计标识自评估报告参考样式 - 图文
- 2018奥鹏研修总结
- 岳阳市十二中七年级入学考试
- 中药制剂分析-名解、简答和论述
- 2018年二建继续教育(市政公用工程)题库(有答案)