eda报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA实验报告
实验1 Altera内嵌逻辑分析仪的应用EDA技术的应用
实验目的:设计一个正弦波和一个锯齿波的混合波,并使用Altera公司在Quartus Ⅱv.9.0或Quartus Ⅱv.13.0中内嵌的信号逻辑分析仪(Signal Tap Ⅱ Logic Analyzer )进行实时采样分析
实验原理图:
实验步骤:
1.打开实验箱,检查实验箱
2.DE2_115实验板下面不允许有导电物接触(最好垫一块绝缘塑料板)。
3.打开Quartus Ⅱ v.9.0或Quartus Ⅱ v.13.0。
4.将工程块图存入E区的新建文件夹中。
5.建立工程。主芯片选: Cyclone IV EP4CE115F29C8.
6.用左键双击图纸空白处,弹出symbol对话框,点击mega-function →arithmetic → LPM_counter。
7.LPM_counter的Parameter Setting →位宽10bit,Match
Project/default 打勾。选Up only。用VHDL语言。选取同步清零端synchronous input的clear
8.将图标粘贴在工程图纸上。
9. 建立rom的数据文件。点击file →new →memory initialization file,位宽8bit,word → 1024。然后按照第二章所讲的方法填充sin数据和锯齿波数据。保存为工程名.mif,用以备用。
10.建立LPM_rom。
11.在Quartus Ⅱv13.0的主菜单上选Processing →Start →Start Analysis & Elaboration 编译并分配引脚。再全程编译。
仿真波形图:
实验2 用VHDL语言设计一个密码控制的跑表量程为59分59秒99毫秒
实验目的:
1.用VHDL语言设计一个密码控制的跑表,量程为59分59秒99毫秒
2.密码cipher的控制功能表:
实验步骤:
1.用VHDL语言编写底层文件:cipher控制的六进制加减计数器。
2.用VHDL语言编写底层文件:cipher控制的十进制加减计数器。
3.用VHDL语言编写底层文件:基于DE2的7段数码管译码器。
4.用VHDL语言编写底层文件:基于DE2的100Hz分频器。主频为50MHz。
5.用package语句将上述4个元件打包
6.用VHDL语言编写顶层文件。
7编译
8.分配引脚。
实验代码:
程序1:cipher控制的六进制加减计数器。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY eda_count6_updown IS
PORT(CLK,RST,ENA:IN STD_LOGIC;
OUTY:OUT STD_LOGIC_VECTOR(3DOWNTO 0);
COUT:OUT STD_LOGIC;
cipher: IN STD_LOGIC_VECTOR(7 DOWNTO 0)
);//输入输出端口声明
END eda_count6_updown;
ARCHITECTURE behave_cnt6 OF eda_count6_updown IS
SIGNAL CQI: STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";
SIGNAL flag1_2: STD_LOGIC_VECTOR(1 DOWNTO 0);
SIGNAL cipher_temp: STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
cipher_temp<=cipher;
P_COUNT10_VT: PROCESS(CLK,RST,ENA)
BEGIN
IF RST='1' THEN CQI<="0000"; //清零
ELSIF CLK 'EVENT AND CLK='1' THEN //上升沿有效
IF ENA='1' THEN
if (flag1_2="00") then
IF CQI<5 THEN
CQI<=CQI+ 1;
ELSE
CQI<="0000"; //六进制
END IF; //加计数
elsif (flag1_2="01") then
IF CQI>0 THEN
CQI<=CQI- 1;
ELSE
CQI<="0101";
END IF;
end if;
END IF;
END IF; //减计数
OUTY<=CQI;//输出等于CQI的值
IF (flag1_2="00") THEN
COUT<= NOT( CQI(2) AND CQI(0));
ELSIF (flag1_2="01") THEN
COUT<= CQI(3) OR CQI(2) OR CQI(1) OR CQI(0);//进位信号 END IF;
END PROCESS P_COUNT10_VT;
p1: Process(clk,cipher_temp)
BEGIN
IF (clk 'EVENT AND clk='1') THEN
IF (cipher_temp="00001111") THEN
flag1_2<="00";
ELSIF (cipher_temp="11110000") THEN
flag1_2<="01";
ELSIF (cipher_temp="11001100") THEN
flag1_2<="10";
END IF;
END IF;
END PROCESS p1;
P2_stop: Process(clk,flag1_2,CQI)
BEGIN
IF (clk 'EVENT AND clk='1') THEN
IF ( flag1_2="10") THEN
CQI<=CQI;
END IF;
END IF;
END PROCESS p2_stop;//停止计数
END behave_cnt6;
程序2:cipher控制的十进制加减计数器。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY eda_count10_updown IS
PORT(CLK,RST,ENA:IN STD_LOGIC;
OUTY:OUT STD_LOGIC_VECTOR(3DOWNTO 0);