《EDA课程设计(45页).doc》由会员分享,可在线阅读,更多相关《EDA课程设计(45页).doc(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-EDA课程设计-第 44 页 湖南工业大学课 程 设 计资 料 袋 交通工程学院 学院(系、部) 2017 2018 学年第 1 学期 课程名称 EDA技术 指导教师 谭会生 职称 教 授 学生姓名 李 波 专业班级 电子科学与技术 学号 题 目 EDA数字系统综合设计与实践 成 绩 起止日期 2017 年 12 月 11 日 2017 年 12 月 21 日目 录 清 单序号材 料 名 称资料数量备 注1课程设计任务书12课程设计说明书13课程设计图纸3434张456湖南工业大学课程设计任务书2017 2018 学年度第 1 学期 交通工程 学院(系、部) 电子科学与技术 专业 1502
2、班课程名称: EDA技术 设计题目: EDA数字系统综合设计与实践 完成期限: 2017 年 12 月 11 日 2017 年 12 月 21 日 共 2 周内容及任务数字系统设计,就是要求学生利用EDA技术进行综合性的数字电子系统设计,培养学生综合应用能力、独立设计与安装调试能力,并树立工程设计观念。具体任务如下:(1)综合计时系统的设计:包括系统设计原理,VHDL等程序设计,时序仿真与分析,逻辑综合与分析、硬件验证等;(2)SOBEL图像边缘检测器的设计:包括系统设计思想原理,VHDL等程序设计,时序仿真与分析,逻辑综合与分析等;各子课题的设计具体要求详见附件一。进度安排起止日期工作内容第
3、15周周一上午/下午(5学时)综合计时系统的设计(电203)第15周周二上午/下午(5学时)综合计时系统的设计(电203)第15周周三上午/下午(5学时)综合计时系统的设计(电203)第15周周四上午/下午(5学时)综合计时系统的设计(电203)第16周周一上午/下午(5学时)SOBEL图像边缘检测器的设计(电203)第16周周二上午/下午(5学时)SOBEL图像边缘检测器的设计(电203)第16周周三上午/下午(5学时)SOBEL图像边缘检测器的设计(电203)第16周周四上午/下午(5学时)SOBEL图像边缘检测器的设计(电203)其它时间学生自行查找资料,自行进行实践,撰写报告 参考资料
4、1 谭会生,张昌凡EDA技术及应用(第四版)M西安:西安电子科技大学出版社,20162 谭会生,瞿遂春EDA技术综合应用实例与分析 M西安:西安电子科技大学出版社,2004指导教师(签字): 谭会生 2017 年 12月 11 日系(教研室)主任(签字): 谭会生 2017 年 12月11日附件一:各设计子课题的具体设计要求1综合计时系统的设计:设计一个综合性的计时系统,要求能实现年、月、日、时、分、秒及星期的计数等综合计时功能,同时将计时结果通过15个七段数码管实现显示,并且可通过两个设置键,在计时过程中,对计时系统的有关参数进行调整。具体系统功能面板如图1所示。图1 系统功能面板2SOBE
5、L图像边缘检测器的设计 边缘可定义为图像中灰度发生急剧变化的区域边界,它是图像最基本的特征,是图像分析识别前必不可少的环节,是一种重要的图像预处理技术。边缘检测主要就是(图像的)灰度变化的度量、检测和定位,它是图像分析和模式识别的主要特征提取手段,它在计算机视觉、图像分析等应用中起着重要的作用,是图像分析与处理中研究的热点问题。在过去的20年里产生了许多边缘检测器,如Rorberts算子,Sobel算子,Prewitt算子,Laplacian算子等。由于Sobel算法只涉及加法操作,但却可以得到很好的划分效果,因而是图像处理系统中最常用的边缘检测算法。Sobel算法包括带4个33掩码的输入图像
6、数据,即Sobel算子,它设置权重来检测水平、垂直、左对角、右对角各个不同方向上密度幅度的不同。这个过程通常被称为过滤。我们来看像素窗口(33),如图2所示。水平、垂直、左对角、右对角各图像方向上密度幅度的变化可以用如下算子进行计算:Q0Q3Q6Q1i,jQ7Q2Q5Q8H=(Q0+2Q3+Q6)-(Q2+2Q5+Q8);V=(Q0+2Q1+Q2)-(Q6+2Q7+Q8);DR=(Q1+2Q0+Q3)-(Q5+2Q8+Q7);DL=(Q1+2Q2+Q5)-(Q3+2Q6+Q7);H,V,DL,DR这四个参数用于计算梯度大小和方向。 图2 图像窗口像素的排列对梯度大小的一个普遍估计值为:Magn
7、itudeMax(H,V,DR,DL)。我们通过对图像灰度作直方图分析后,便可以给出区分度阀值Threshold,区分度阀值往往要借助一定的经验并需要反复调整。如果Magnitude大于Threshold,则该像素被声明为边界像素,否则为一般像素。本课题就是要求使用LPM兆功能块设计和VHDL程序设计相结合的方式或全部采用VHDL程序设计方式,用FPGA/CPLD实现Sobel算法。EDA技术课 程 设 计 说 明 书EDA数字系统综合设计与实践起止日期: 2017 年 12 月 11 日 2017 年 12 月 21 日 共 2 周学生姓名李 波班级电子科学与技术1502学号成绩指导教师(签
8、字)交通工程学院2017年 12 月 21 日一、综合计时系统的设计1. 系统设计原理设计一个综合性的计时系统,要求能实现年、月、日、时、分、秒及星期的计数等综合计时功能,同时将计时结果通过15个七段数码管实现显示,并且可通过两个设置键,在计时过程中,对计时系统的有关参数进行调整。如图所示,该计时系统的设计共分为三个主要模块:综合计时电路(ITC)、显示控制电路(DUC)及调整控制电路(ATCC)。其具体模块功能在此不再详细描述。综合计时电路(ITC)可分为计秒电路、计分电路、计时电路、计星期电路、计日电路、计月电路和计年电路,共七个子模块。显示控制电路(DUC)使用的是十五个七段显示数码管。
9、它可分为两个子模块:(1).显示控制电路:负责完成数据选择扫描及数码管位选择信号的产生,数据扫描选择输出,对于选择的数据进行BCD码转换等功能。(2).显示译码电路:将用于显示的BCD码数据进行译码。正常调秒调日调月调时调分调年 调整控制电路(ATCC)是通过模式和调整两个外部键完成。其中模式键负责切换正常时间计数模式和时间调整模式,调整键负责在时间调整模式下,对当前模式计时结果进行调整。在模式选择过程中,被选择到的调整模式所对应的发光二极管会被点亮。而正常模式中,7个发光二极管都不会被点亮。模式调整的VHDL程序主要是通过一个状态机来实现。、 调整模式切换顺序(图)2. VHDL程序设计在这
10、次课程设计中,我们运用学习过的VHDL语言编译本次课程设计相关功能的模块。下面就简单的罗列一下本次课程设计相关的VHDL程序文件。经编译及仿真后下面所描述的文件都是正确的。且为了节约纸张,接下来只罗列一些书上并没有直接给出的一些VHDL源程序:CNT7.VHD、CNT12.VHD、CNT24.VHD、CNT100.VHD、YMQ3_8.VHD、YMQ4_7.VHD,总计六个源程序并简单说明在该系统中相应的功能。(1)-YMQ47.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY
11、 YMQ47 ISPORT(AIN4:IN STD_LOGIC_VECTOR(3 DOWNTO 0);DOUT7 :OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY YMQ47;ARCHITECTURE ART OF YMQ47 ISBEGINPROCESS(AIN4)BEGINCASE AIN4 ISWHEN0000=DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7=0000000;END CASE;END PROCESS;END ARCHITECTUR
12、E ART;将显示控制器(DUC)中输出的BCD码进行译码后作为七段共阴极发光二极管的输入信号,实现了最终的阿拉伯数字显示在系统功能面板上。(注:该显示部分由十五个共阴极发光二极管构成。)(2LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY XSKZQ ISPORT(CLK_SCAN:IN STD_LOGIC;SEC,MIN:IN STD_LOGIC_VECTOR(5 DOWNTO 0);HOUR:IN STD_LOGIC_VE
13、CTOR(4 DOWNTO 0);DAY: IN STD_LOGIC_VECTOR(4 DOWNTO 0);MON:IN STD_LOGIC_VECTOR(3 DOWNTO 0);YEAR:IN STD_LOGIC_VECTOR(6 DOWNTO 0);WEEK:IN STD_LOGIC_VECTOR(2 DOWNTO 0);SELOUT:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);HBCD,LBCD:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY XSKZQ;ARCHITECTURE ART OF XSKZQ ISSIGNAL T
14、EMP1,TEMP2:INTEGER RANGE 0 TO 9; SIGNAL CNT: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINPROCESS(CLK_SCAN) ISBEGIN IF CLK_SCANEVENT AND CLK_SCAN=1 THENIF CNT=111 THENCNT=000 ;ELSECNT=CNT+1;END IF;END IF;END PROCESS;SELOUTTEMP1=CONV_INTEGER(SEC)-CONV_INTEGER(SEC)/10*10;TEMP2TEMP1 = CONV_INTEGER(MIN)-CONV_INTEG
15、ER(MIN)/10*10;TEMP2TEMP1=CONV_INTEGER(HOUR)-CONV_INTEGER(HOUR)/10*10;TEMP2TEMP1=CONV_INTEGER(DAY)-CONV_INTEGER(DAY)/10*10;TEMP2TEMP1=CONV_INTEGER(MON)-CONV_INTEGER(MON)/10*10;TEMP2TEMP1=CONV_INTEGER(YEAR)-CONV_INTEGER(YEAR)/10*10;TEMP2TEMP1=2; TEMP2TEMP1=CONV_INTEGER(WEEK)-CONV_INTEGER(WEEK)/10*10;T
16、EMP2NULL;END CASE;CASE TEMP1 ISWHEN 0 =LBCDLBCDLBCDLBCDLBCDLBCDLBCDLBCDLBCDLBCDLBCDHBCDHBCDHBCDHBCDHBCDHBCDHBCDHBCDHBCDHBCDHBCD=0000;END CASE;END PROCESS;END ARCHITECTURE;(3)-TZKZQLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TZKZQ ISPORT(KEY: IN STD_LOGIC_VECTOR(1
17、DOWNTO 0);CLK_KEY: IN STD_LOGIC;MAX_DAYS:IN STD_LOGIC_VECTOR(4 DOWNTO 0);SEC_EN,MIN_EN,HOUR_EN,DAY_EN,MON_EN,YEAR_EN,WEEK_EN :OUT STD_LOGIC;HOUR_CUR: IN STD_LOGIC_VECTOR(4 DOWNTO 0);MIN_CUR,SEC_CUR: IN STD_LOGIC_VECTOR( 5 DOWNTO 0);YEAR_CUR: IN STD_LOGIC_VECTOR(6 DOWNTO 0) ;MON_CUR: IN STD_LOGIC_VEC
18、TOR( 3 DOWNTO 0);DAY_CUR: IN STD_LOGIC_VECTOR(4 DOWNTO 0);WEEK_CUR: IN STD_LOGIC_VECTOR(2 DOWNTO 0);SEC,MIN: BUFFER STD_LOGIC_VECTOR(5 DOWNTO 0);HOUR: BUFFER STD_LOGIC_VECTOR(4 DOWNTO 0) ;DAY:BUFFER STD_LOGIC_VECTOR(4 DOWNTO 0);MON: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ;YEAR:BUFFER STD_LOGIC_VECTOR(6
19、 DOWNTO 0);WEEK: BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0);END ENTITY TZKZQ;ARCHITECTURE ART OF TZKZQ ISTYPE STATETYPE IS (NORMAL,SEC_SET,MIN_SET,HOUR_SET,DAY_SET,MON_SET,YEAR_SET,WEEK_SET);SIGNAL MODE:STATETYPE;BEGINPROCESS (KEY,CLK_KEY )BEGINIF CLK_KEYEVENT AND CLK_KEY=1THENIF KEY=01 THENSEC_EN=1;MIN_EN
20、=1;HOUR_EN=1;DAY_EN=1;MON_EN= 1;YEAR_EN=1;WEEK_EN MODE=SEC_SET;SEC=SEC_CUR;SEC_EN MODE=MIN_SET;MIN=MIN_CUR; SEC_EN=1;MIN_EN MODE=HOUR_SET;HOUR=HOUR_CUR;MIN_EN=1;HOUR_ENMODE=DAY_SET;DAY=DAY_CUR; HOUR_EN=1;DAY_ENMODE=MON_SET;MON=MON_CUR;DAY_EN=1;MON_EN MODE=YEAR_SET;YEAR=YEAR_CUR;MON_EN=1;YEAR_ENMODE=
21、WEEK_SET;WEEK=WEEK_CUR;YEAR_EN=1;WEEK_ENMODE SEC_EN=0;IF SEC=111011THEN SEC=000000;ELSE SECMIN_EN=0;IF MIN=111011THEN MIN=000000;ELSE MINHOUR_EN=0;IF HOUR=11000 THEN HOUR=00000;ELSE HOURDAY_EN=0;IF DAY=MAX_DAYS THEN DAY=00001;ELSE DAYMON_EN=0;IF MON=1100 THEN MON=0001;ELSE MON YEAR_EN=0;IF YEAR=1100
22、011THEN YEAR=0000000;ELSE YEARWEEK_EN=0;IF WEEK=111THEN WEEK=001;ELSE WEEKNULL;END CASE;END IF;END IF;END PROCESS;END ARCHITECTURE ART;(4)-CNT7LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT7 IS PORT(CLK:IN STD_LOGIC; LD:IN STD_LOGIC; DATA:IN STD_LOGIC_VECTOR(2 DO
23、WNTO 0);NUM:BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0);END ENTITY CNT7;ARCHITECTURE ART OF CNT7 IS BEGIN PROCESS(CLK,LD)IS BEGIN IF (LD=0)THEN NUM=DATA; ELSIF CLKEVENT AND CLK=1 THEN IF NUM=111 THEN NUM=000; ELSE NUM=NUM+1;END IF; END IF; END PROCESS; END ARCHITECTURE ART;CNT7.VHD在程序中是实现计星期功能。由下级进位信号作为该级输入
24、信号。并有可输入输出端口实现了在调整模式中的算法人机交互。实现调整功能。由于CNT12.VHD、CNT24.VHD及CNT100.VHD在形式上与上述内容类似,分别以计月、计时、计年的功能,且都能实现调整模式中的算法人机交互。因此不再赘谈。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT60 IS PORT(CLK:IN STD_LOGIC; LD:IN STD_LOGIC; DATA:IN STD_LOGIC_VECTOR(5 DOWNTO 0);NUM:BUFFER STD
25、_LOGIC_VECTOR(5 DOWNTO 0); CO:OUT STD_LOGIC);END ENTITY CNT60;ARCHITECTURE ART OF CNT60 IS BEGIN PROCESS(CLK,LD)IS BEGIN IF (LD=0)THEN NUM=DATA; ELSIF CLKEVENT AND CLK=1 THEN IF NUM=111011 THEN NUM=000000;CO=1; ELSE NUM=NUM+1;COIS_RUNNIAN:=1; WHEN0001000=IS_RUNNIAN:=1; WHEN0001100=IS_RUNNIAN:=1; WHE
26、N0010000=IS_RUNNIAN:=1; WHEN0010100=IS_RUNNIAN:=1; WHEN0011000=IS_RUNNIAN:=1; WHEN0011100=IS_RUNNIAN:=1; WHEN0100000=IS_RUNNIAN:=1; WHEN0100100=IS_RUNNIAN:=1; WHEN0101000=IS_RUNNIAN:=1; WHEN0101100=IS_RUNNIAN:=1; WHEN0110000=IS_RUNNIAN:=1; WHEN0110100=IS_RUNNIAN:=1; WHEN0111000=IS_RUNNIAN:=1; WHEN01
27、11100=IS_RUNNIAN:=1; WHEN1000000=IS_RUNNIAN:=1; WHEN1000100=IS_RUNNIAN:=1;WHEN1001000=IS_RUNNIAN:=1; WHEN1001100=IS_RUNNIAN:=1; WHEN1010000=IS_RUNNIAN:=1;WHEN1010100=IS_RUNNIAN:=1; WHEN1011000=IS_RUNNIAN:=1; WHEN1100000=IS_RUNNIAN:=1; WHEN OTHERS=IS_RUNNIAN:=0;END CASE;CASE YUE ISWHEN0001=TOTAL_DAYS
28、TOTAL_DAYSTOTAL_DAYSTOTAL_DAYSTOTAL_DAYSTOTAL_DAYSTOTAL_DAYSTOTAL_DAYSTOTAL_DAYSTOTAL_DAYSTOTAL_DAYS IF(IS_RUNNIAN=1) THENTOTAL_DAYS=11101; ELSE TOTAL_DAYSNULL; END CASE;IF(LD=0)THENNUM=DATA;ELSIF CLKEVENT AND CLK=1 THENMAX_DAYS=TOTAL_DAYS;IF NUM=TOTAL_DAYS THENNUM=NUM+1;CO=0;END IF;END IF;END PROCE
29、SS;END ARCHITECTURE; (7)-CNT24LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT24 IS PORT(CLK:IN STD_LOGIC; LD:IN STD_LOGIC; DATA:IN STD_LOGIC_VECTOR(4 DOWNTO 0);NUM:BUFFER STD_LOGIC_VECTOR(4 DOWNTO 0); CO:OUT STD_LOGIC);END ENTITY CNT24;ARCHITECTURE ART OF CNT24 IS
30、 BEGIN PROCESS(CLK,LD)IS BEGIN IF (LD=0)THEN NUM=DATA; ELSIF CLKEVENT AND CLK=1 THEN IF NUM=10111 THEN NUM=00000;CO=1; ELSE NUM=NUM+1;CO=0;END IF; END IF; END PROCESS; END ARCHITECTURE ART;(8)-CNT12LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT12 IS PORT(CLK:IN S
31、TD_LOGIC; LD:IN STD_LOGIC; DATA:IN STD_LOGIC_VECTOR(3 DOWNTO 0);NUM:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); CO:OUT STD_LOGIC);END ENTITY CNT12;ARCHITECTURE ART OF CNT12 IS BEGIN PROCESS(CLK,LD)IS BEGIN IF (LD=0)THEN NUM=DATA; ELSIF CLKEVENT AND CLK=1 THEN IF NUM=1011 THEN NUM=0000;CO=1; ELSE NUM=NUM+1;
32、CO=0;END IF; END IF; END PROCESS; END ARCHITECTURE ART;(9) -CNT100LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT100 IS PORT(CLK:IN STD_LOGIC; LD:IN STD_LOGIC; DATA:IN STD_LOGIC_VECTOR(6 DOWNTO 0);NUM:BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY CNT100;ARCHITECTURE ART OF CNT100 IS BEGIN PROCESS(CLK,LD)IS BEGIN IF (LD=0)THEN NUM=DATA; ELSIF CLKEVENT AND CLK=1 THEN IF NUM=1100100 THEN NUM=0000000; ELSE NUMDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUT=01