eda大作业.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级 021039
学号 ********
EDA报告
题目 VHDL设计初步
学院电子工程学院
专业信息对抗技术
学生姓名
导师姓名
目录
第一章实验部分(秒表) (2)
1、程序设计: (2)
2、程序代码 (2)
3、程序调试 (4)
第二章习题部分 (8)
习题一 (8)
习题二 (8)
习题三 (10)
习题四 (11)
习题五 (12)
习题六 (14)
习题七 (17)
第一章实验部分(秒表)
1、程序设计:
秒表显示共有6位,两位显示分,两位显示秒,十分秒和百分秒各一位。设计时使用一个计数器,随着时钟上升沿的到来循环计数,每计数一次,百分秒位加一,通过百分秒位满十进位来控制十分位的计数,十分位满十进位,依次类推,实现秒表计数。
为实现秒位的计时精确,百秒位必须以0.01秒的时间间隔计数,即时钟的频率是100Hz。为此,本设计采用3MHz的时钟频率通过分频得到100Hz的时钟频率,再送给控制时钟以得到比较精确的CLK信号。其中,时钟信号CLK为3MHz 的时钟频率,分频后得到的时钟为CLK2,输出引脚CLK2和输入引脚CLK2在外部相连,实现将分频后的时钟送入。
2、程序代码
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY MIAOBIAO IS
PORT (CLK,CLK1,STA,POS,STO,RST: IN STD_LOGIC;
CQ1,CQ2,CQ3,CQ4,CQ5,CQ6 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
CLK2:OUT STD_LOGIC
);
END MIAOBIAO;
ARCHITECTURE BEHAV OF MIAOBIAO IS
BEGIN
PROCESS(CLK) --由频率为3MHz的时钟产生频率为100Hz的时钟VARIABLE NUM:INTEGER RANGE 0 TO 15000;--定义计数器
VARIABLE Q:STD_LOGIC;
BEGIN
IF CLK'EVENT AND CLK='1' THEN
IF NUM=15000 THEN NUM:=0;Q:=NOT Q;--计数器每计数15000,时钟改变电平--
值
ELSE NUM:=NUM+1;
END IF;
END IF;
CLK2<=Q;
END PROCESS;
PROCESS(CLK1,STA,POS,STO,RST)
VARIABLE CQI1:STD_LOGIC_VECTOR(3 DOWNTO 0);
VARIABLE CQI2:STD_LOGIC_VECTOR(3 DOWNTO 0);
VARIABLE CQI3:STD_LOGIC_VECTOR(3 DOWNTO 0);
VARIABLE CQI4:STD_LOGIC_VECTOR(3 DOWNTO 0);
VARIABLE CQI5:STD_LOGIC_VECTOR(3 DOWNTO 0);
VARIABLE CQI6:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF STO='1' THEN CQI1:=(OTHERS=>'0');CQI2:=(OTHERS=>'0');CQI3:=(OTHERS=>'0');
CQI4:=(OTHERS=>'0');CQI5:=(OTHERS=>'0');CQI6:=(OTHERS=>'0');
ELSIF CLK1'EVENT AND CLK1='1' THEN
IF STA='1' THEN
IF RST='0' THEN
IF POS='0' THEN
IF CQI1="1001" THEN CQI1:=(OTHERS => '0');--百分秒位满十进--位
IF CQI2="1001" THEN CQI2:=(OTHERS => '0'); --十分秒位满十进--位
IF CQI3="1001" THEN CQI3:=(OTHERS => '0'); --秒位满十进位
IF CQI4="0101" THEN CQI4:=(OTHERS => '0'); --十秒位满六进位
IF CQI5="1001" THEN CQI5:=(OTHERS => '0'); --分位满十进位
IF CQI6="0101" THEN CQI6:=(OTHERS => '0'); --十分位满六进位
ELSE CQI6:=CQI6+1;
END IF;
ELSE CQI5:=CQI5+1;
END IF;
ELSE CQI4:=CQI4+1;
END IF;
ELSE CQI3:=CQI3+1;
END IF;
ELSE CQI2:=CQI2+1;
END IF;
ELSE CQI1:=CQI1+1;
END IF;
END IF;
END IF;
END IF;
IF RST='1' THEN
CQI1:=(OTHERS => '0');CQI2:=(OTHERS => '0');
CQI3:=(OTHERS => '0');CQI4:=(OTHERS => '0');
CQI5:=(OTHERS => '0');CQI6:=(OTHERS => '0');
END IF;
CQ1<=CQI1;CQ2<=CQI2;CQ3<=CQI3;
CQ4<=CQI4;CQ5<=CQI5;CQ6<=CQI6;
END IF;
END PROCESS;
END BEHAV;
3、程序调试
(1)时钟给出后,实现开始功能: