数字系统设计技术课程设计报告
数字系统设计实验---32位串行加法器实验综述

深圳大学实验报告课程名称:_________ 数字系统设计________________________ 实验项目名称: 32位串行加法器______________________ 学院_______________________ 专业_______________________ 指导教师: ______________________________________________报告人: ________ 学号:20091000000班级:1班实验时间:__________ 2011-12-4 ________________________实验报告提交时间:______________________教务处制一、实验目的与要求:实验目的:1、掌握串行加法器的原理和设计。
2、熟悉VHDL状态机的设计。
3、学会分析波形图。
实验要求:设计一个用一个1位加法器构建的一个32位串行加法器。
重点是算法状态机的实现还有系统的时序分析;输出和整理VHDL源代码;输出和整理电路结构图;输出和整理仿真波形图二、实验原理1、设计原理图:本图参考课本2、流程图:针对以上流程图,其中,Sh为控制移位寄存器的使能信号,k为工作状态指示信号,load为加载信号,counter为运算计数器,N为系统工作控制信号。
从流程图中可以看出加法器的整个工作流程是怎么样子的,具体工作情况如下面的设计。
三、实验内容与步骤1、VHDL代码的编写:----------- 控制器--------------------------------------------- library IEEE;use IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_ un sig ned.all;en tity con troller isPort ( clk : in STD_LOGIC;N : in STD_LOGIC;K,Sh,load : out STD_LOGIC);end con troller;architecture Behavioral of con troller issig nal state ,n extstate:i nteger range 0 to 2; ---设置状态sig nal coun ter:std_logic_vector(4 dow nto 0);beginprocess(clk)beginif(clk'event and clk='1') thenstate<=n extstate;end if;end process;process(clk,N)beginif(clk'event and clk='1') thencase state is ---设置各状态when 0 =>sh<='0';K<='0';load<='0';cou nter<="00000"; if N='1' the nload<='1';n extstate<=1;elsen extstate<=0;end if;when 1 =>sh<='1';K<='0';load<='0';if cou nter="11110" thencoun ter<=co un ter+1;n extstate<=2;elsecoun ter<=co un ter+1;n extstate<=1;end if;when 2 =>sh<='0';K<='1';load<='0:if N='0' the nn extstate<=0;elsen extstate<=2;end if;end case;end if;end process;end Behavioral;-------------- 加数寄存器 -------------------library IEEE;use IEEE.STD_LOGIC_1164.ALL;en tity registers_jiashu isPort ( in put : in STD_LOGIC_vector(31 dow nto 0);Sh,load,clk: in STD_LOGIC; SO : out STD_LOGIC);end registers_jiashu;architecture Behavioral of registers_jiashu is sig nal x:std_logic_vector(31 dow nto 0); begin process(clk) beginif(clk'event and clk='1') thenif (load='1‘)then x<=in put;elsif (sh='1') the n ---:x(30 dow nto 0)<=x(31 dow nto 1);end if;end if;end process;so<=x(0);end Behavioral;-------------- 累加器 ---------------------library IEEE;use IEEE.STD_LOGIC_1164.ALL;en tity registers_add isPort ( in put : in STD_LOGIC_vector(31 dow nto 0);clk : in STD_LOGIC;load,Sh,Si: in STD_LOGIC;SO : out STD LOGIC;output:out std_logic_vector(31 dow nto 0));end registers_add;architecture Behavioral of registers_add issig nal x:std_logic_vector(31 dow nto 0);beginprocess(clk)N<='0';wait for 10*clk_period; --延时10个时钟周期,进入下一轮仿真调试in putA<="01010101010101010101010101010101"; -- i nputa= 1431655765,in putB<="00110000000000000000000010101000"; -- i nputb= 805306536,N<='1'; --N=1时开始计时,并开始下载数据wait for 32*clk_period;--32 个时钟周期之后N<='0:--N=0,停止数据下载,得出相加后的结果wait for 10*clk_period; --延时10个时钟周期,进入下一轮仿真调试wait;end process;END;四、实验数据与分析1、综合的电路:设计图外观1 :adder 32l设计图外观2:adder_32oiJtputA(31:0)incl kNadder_321、控制器:2、全加器:情况二:in puta= 1431655765, in putb=805306536,outputa=2236962301Q- /adder _3 2_tE5tbendn /inputa EJ- /adder _32_te5tbenefi /inputb/adder _32_te£tbencfi /dk/adder_32Jbestberdn /n Q-」/adder_32_tEstberidi/outputa/addcr_32_testberidiA 731381211114 J1>55765805^)65363i ・i i17B957306J22369623012、仿真的波形图如下:情况一:in puta二 73,i nputb二 138,outputa=211/adder _32_t)&stlbench/inpLi taD- /adder _3 2_te&tbendi/inp*j thJ/ adder _32_testben 击/die /adder_32_testbendiAi/adder_3Z_testbendi/outputaJ/adder _32_testbench 4cD- /adder _3 2_testbendi^nputa73Q- .. add er 2_test±)endi /inpu tb133/adder _32_tes±>erKh/dk1/adder_32_testbendi /h0C- /adder _32_testberKhAxjtpu ta211/adder_32_testbencti 水1数据处理分析:每次从N=1开始,加法器进行数据下载,32个时钟周期之后,当N=0时, 输出k=1,表示串行累加的过程结束,此时输出的结果即为加法器的最后结果。
《计算机系统综合设计》课程设计

xxxx大学计算机科学与技术学院课程设计说明书题目:实验计算机指令的设计(三)课程:计算机系统综合设计院(部):计算机科学与技术学院专业:网络工程班级:网络101班学生姓名: xxx学号: **********指导教师: xxx完成日期: 2013年1月17日目录一、课程设计题目 (4)二、课程设计目的 (4)三、课程设计方案 (4)四、课程设计内容 (4)(一)、硬件资源 (4)1.运算器模块 (4)2.寄存器堆模块 (5)3.指令部件模块 (5)4.内存模块 (5)5.总线缓冲模块 (5)6.微程序控制模块 (5)7.启停和时序模块 (6)8.整机逻辑框图 (6)(二)、设计指令 (8)1、指令操作数寻址方式及其代码 (8)2、指令执行流程 (8)(三)、确定微操作控制信号及其实现方法 (10)1、设计微指令格式 (10)2、微程序控制方式 (10)3、设计实验接线表 (11)4.PLD方程.................................................................................................. 错误!未定义书签。
(四)、指令编码及微程序 . (15)(五)、程序调试 (17)五、结论 (18)六、参考文献 (22)山东建筑大学计算机科学与技术学院课程设计任务书指导教师(签字):教研室主任(签字):一、课程设计题目实验计算机指令的设计(三)二、课程设计目的在学习了专业基础课《计算机组成原理A》和《系统结构》课程的基础上,通过设计简单实验计算机的部分指令,加深对计算机硬件结构和系统软件的认识,初步掌握计算机指令的设计与使用方法。
巩固对“计算机组成原理与系统结构”概念的理解;加深对计算机组成、结构、工作原理、工作过程的理解和认识;提高综合运用所学知识进行系统分析、设计的能力。
三、课程设计方案基于FD-CES实验箱的硬件模块平台,通过PC机和可编程逻辑(PLD)电路实验板,完成简单实验计算机的部分指令的控制信号线的连接、编码、微程序的设计,在FD-CES实验箱的控制台上运行用所设计的指令编写的程序,验证设计指令的正确性。
现代数字系统设计

微地址产生器产 2.5.3.1 微程序控制器典型结构 生下一条应执行 的微指令。 微控制器产 生局部时钟, 控制各寄存 器的操作, 接收数据子 系统的开启 或终止信号。
2.5.3.3 微程序流的控制
微程序流的执行方法可以有许多种,如顺 序的、条件转移或无条件转移、循环或子 程序调用等,因此控制方法也是多样的, 这些方法集中到一点,即如何设计微程序 控制器中的微地址产生器。 微地址产生器如何根据当前的微指令及一 些相应的条件来确定下一条微指令的地址。
秒脉冲发生器
(3)锁相频率合成技术方案
与DDS类似,采用查表方式,通过改变ROM地址 产生器的时钟CP频率来改变输出信号的频率,而 时钟信号来自锁相环路VCO的输出。
鉴相器 PD 环路滤波器 LF 压控振荡器 VCO fVCO 地址计数器 (模200)
fVCO/N
分频器 ÷N
ROM (/M) fO A D/A
(3)锁相频率合成技术方案
步进1Hz,fr=200Hz。 fVCOmin=20×200=4kHz, fVCOmax=20k×200=4MHz,频率覆盖率为 1000。 若采用单片集成锁相环74HC4046,其 VCO最高工作频率为30MHz,频率覆盖率 为10,因此需将系统分成三个波段。
4.3.1.3 方案论证与框图
方案二:
4.3.1.3 方案论证与框图
方案三:
6.1 实用信号源的设计
信号源是电子系统设计、测试、维修所必 需的仪器。它的性能、指标、使用方法对 于广大电子线路工作者的工作有着重大影 响。因此,本节重点要求大家掌握信号源 的组成并能够自己设计一个高指标的信号 源。
北京理工大学数字系统设计与实验报告

3、仿真结果 功能仿真设置:
功能仿真结果: (1)总体仿真结果
(2)reset 高有效和二分频仿真结果
(3)四分频仿真结果
(4)八分频仿真结果
(5)十六分频仿真结果
四、实验心得
通过本次实验,设计频率可选的模十状态机以及 7 段译码电路,学会了以代码 形式实现频率多路选择器的功能,巩固了模十状态机的实现方式,进一步掌握 VerilogHDL 硬件描述语言。
功能仿真结果:
时序仿真设置:
时序仿真结果:
2、 3—8 译码器 (1)设计思路 随着时钟信号 clk 上升沿的到来,输入 D2D1D0 从 000 加到 111,每个输入 D2D1D0 对应着一个输出 Q7Q6Q5Q4Q3Q2Q1Q0,对应关系如真值表所示:
输入 D2 0 0 0 0 1 1 1 1 D1 0 0 1 1 0 0 1 1 D0 0 1 0 1 0 1 0 1 Q7 0 0 0 0 0 0 0 1 Q6 0 0 0 0 0 0 1 0 Q5 0 0 0 0 0 1 0 0 Q4 0 0 0 0 1 0 0 0
seg <= 7'b0011001; 5: seg <= 7'b0010010; 6: seg <= 7'b0000010; 7: seg <= 7'b1111000; 8: seg <= 7'b0000000; 9: seg <= 7'b0010000; default: seg <= 7'b0001000; endcase end endmodule (2)功能图
三、设计与实现
1、设计思路 (1) 、时钟信号 clk 作为分频器的输入,分频器的设计思路为设计一个模十六计 数器,cp0(Q0)输出即为二分频信号,cp1(Q1)输出即为四分频信号,cp2(Q2) 输出即为八分频信号,cp3(Q3)输出即为十六分频信号。分频器的输出由 4 选 1 多 路选择器的选择输入端 select 选择 2 分频、4 分频、 8 分频和 16 分频其中之一作为状 态机的时钟输入,当 select 为 0 时,输出为二分频信号;为 1 时,输出为四分频信 号;为 2 时,输出为八分频信号;为 3 时,输出为十六分频信号。 (2) 、reset 为高有效,则若 reset 信号为 1 时,qout 置为 0,则 now_state 为 0。 若 reset 信号为 0 时, qout 自加,并作为状态机的输入 驱动,让状态机按照 0->2->5->6->1->9->4->8->7->3->0 的顺序输出。 (3) 、状态机按照 0->2->5->6->1->9->4->8->7->3->0 的顺序输出,并使用此输出 作为驱动输入到 7 段译码器的显示逻辑。
华南理工大学数字系统设计实验3报告资料

实验三基于状态机的交通灯控制地点:31号楼312房;实验台号:12实验日期与时间:2017年12月08日评分:预习检查纪录:批改教师:报告内容:一、实验要求1、开发板上三个led等分别代表公路上红黄绿三种颜色交通灯。
2、交通灯状态机初始状态为红灯,交通灯工作过程依次是红→绿→黄→红。
3、为了方便观察,本次实验要求红灯的显示时间为9s,绿灯显示时间为6s,黄灯显示时间为3s,时间需要倒计时,在数码管上显示。
编程之前要求同学们先画好ASM图。
4、1Hz分频模块请采用第二次实验中的内容,7段码显示模块请参考书本相关内容。
5、第三次实验课用到EP2C8Q208C8通过74HC595驱动数码管,有两种方法写该模块代码:方法1,用VHDL语言写,(自己写VHDL代码有加实验分)。
方法2,可调用verilog数码管驱动模块,该模块在附件“seg.zip”中。
和其它VHDL编写的模块可以混搭在一个电路图中使用。
EP2C8Q208C8的SCTP,SHCP,SER_DATA数码管信号线通过两块74HC595集成块,再驱动数码管。
6、芯片型号:cyclone:EP2C8Q208C8,开发板所有资料都在“新板”附件中,其中管脚配置在实验要求中是不对的,以“新板”附件中为准。
二、实验内容1设计要求开发板上三个led等分别代表公路上红黄绿三种颜色交通灯。
交通灯状态机初始状态为红灯,交通灯工作过程依次是红→绿→黄→红。
本次实验要求红灯的显示时间为9s,绿灯显示时间为6s,黄灯显示时间为3s,时间需要倒计时,在数码管上显示。
2设计思路(1)数码管驱动第三次实验课用到EP2C8Q208C8通过74HC595驱动数码管,有两种方法写该模块代码:方法1,用VHDL语言写,(自己写VHDL代码有加实验分)。
方法2,可调用verilog数码管驱动模块,该模块在附件“seg.zip”中。
和其它VHDL 编写的模块可以混搭在一个电路图中使用。
数字系统设计综合实验报告

数字系统设计综合实验报告实验名称:1、加法器设计2、编码器设计3、译码器设计4、数据选择器设计5、计数器设计6、累加器设计7、交通灯控制器设计班级:姓名:学号:指导老师:实验1 加法器设计1)实验目的(1)复习加法器的分类及工作原理。
(2)掌握用图形法设计半加器的方法。
(3)掌握用元件例化法设计全加器的方法。
(4)掌握用元件例化法设计多位加法器的方法。
(5)掌握用Verilog HDL语言设计多位加法器的方法。
(6)学习运用波形仿真验证程序的正确性。
(7)学习定时分析工具的使用方法。
2)实验原理加法器是能够实现二进制加法运算的电路,是构成计算机中算术运算电路的基本单元。
目前,在数字计算机中,无论加、减、乘、除法运算,都是化为若干步加法运算来完成的。
加法器可分为1位加法器和多位加法器两大类。
1位加法器有可分为半加器和全加器两种,多位加法器可分为串行进位加法器和超前进位加法器两种。
(1)半加器如果不考虑来自低位的进位而将两个1位二进制数相加,称半加。
实现半加运算的电路则称为半加器。
若设A和B是两个1位的加数,S 是两者相加的和,C是向高位的进位。
则由二进制加法运算规则可以得到。
(2)全加器在将两个1位二进制数相加时,除了最低位以外,每一位都应该考虑来自低位的进位,即将两个对应位的加数和来自低位的进位三个数相加,这种运算称全加。
实现全加运算的电路则称为全加器。
若设A、B、CI分别是两个1位的加数、来自低位的进位,S是相加的和,C是向高位的进位。
则由二进制加法运算规则可以得到:3)实验内容及步骤(1)用图形法设计半加器,仿真设计结果。
(2)用原件例化的方法设计全加器,仿真设计结果(3)用原件例化的方法设计一个4为二进制加法器,仿真设计结果,进行定时分析。
(4)用Verilog HDL语言设计一个4为二进制加法器,仿真设计结果,进行定时分析。
(5)分别下载用上述两种方法设计4为加法器,并进行在线测试。
4)设计1)用图形法设计的半加器,如下图1所示,由其生成的符号如图2所示。
eda课程设计报告

eda课程设计报告一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握EDA工具的使用方法。
2. 学生能运用EDA软件进行电路设计与仿真,理解并掌握数字电路的设计原理。
3. 学生了解并掌握基础的硬件描述语言(如VHDL/Verilog),能完成简单的数字系统设计。
技能目标:1. 学生通过EDA软件的操作,培养电子电路设计、仿真与验证的实际操作能力。
2. 学生通过小组合作完成设计项目,提高团队协作与沟通技巧。
3. 学生能够运用所学知识解决实际问题,具备一定的创新意识和动手能力。
情感态度价值观目标:1. 学生在EDA课程学习中,培养对电子科学技术的兴趣和探究精神。
2. 学生通过课程实践,增强自信心和成就感,激发进一步学习的动力。
3. 学生在学习过程中,树立正确的工程伦理观念,认识到技术发展对社会的责任和影响。
课程性质:本课程为电子信息工程及相关专业高年级学生的专业核心课程,旨在通过理论与实践相结合的教学,提高学生的电子设计能力。
学生特点:学生已具备一定的电子技术基础,具有较强的学习能力和实践欲望,对新技术和新工具充满好奇心。
教学要求:结合学生特点,注重培养实际操作能力,鼓励学生创新思维,提高解决实际问题的能力。
通过课程目标分解,确保学生在知识、技能和情感态度价值观方面的全面成长。
后续教学设计和评估将以此为基础,关注学生的学习成果。
二、教学内容根据课程目标,教学内容分为以下三个模块:1. EDA基本概念与工具使用- 教材章节:第一章 EDA技术概述,第二章 EDA工具简介- 内容列举:EDA发展历程,常用EDA软件介绍,软件安装与配置,基本操作流程。
2. 数字电路设计与仿真- 教材章节:第三章 数字电路设计基础,第四章 仿真技术- 内容列举:数字电路设计原理,EDA软件电路设计流程,仿真参数设置,波形分析与验证。
3. 硬件描述语言与数字系统设计- 教材章节:第五章 硬件描述语言,第六章 数字系统设计实例- 内容列举:硬件描述语言基础,VHDL/Verilog语法要点,简单数字系统设计方法,设计实例分析与实操。
数电课程设计报告

数电课程设计报告郑州科技学院《数字电子技术》课程设计题目____________________学生姓名专业班级学号院(系)指导教师完成时间 2013年月日目录1课程设计的目的 (1)2课程设计的任务与要求…………………………………………23设计方案与论证 (3)3.1 (3)3.2 (4)4设计原理及功能说明 (5)5单元电路的设计(计算与说1明) (5)6硬件的制作与调试 (5)7总结 (10)参考文献 (15)附录1:总体电路原理图 (18)附录2:元器件清单 (19)2一、总体概述1.1 设计意义随着社会的不断进步和科学技术,经济的不断发展,人们生活水平得到很大的提高,汽车已经广泛的进入了人们的生活。
而作为汽车电路重要的组成部分---汽车尾灯控制系统,人们对它的认识还存在许多的局限性,还有待我们继续对其进行研究和探讨。
所以设计一套更好更合理的汽车尾灯系统,对汽车业的发展,对经济的发展有着深远的影响。
1.2 设计目的通过本课程的设计,我们应该做到:(1)更好的巩固和加深对基础知识的理解,学会设计中小型数字系统的方法,独立完成调试过程,增强我们理论联系实际的能力,提高学生电路设计和分析能力。
(2)通过实践,在理论指导下有所创新,为后继专业课的学习和日后工程实践奠定基础。
1.2 设计要求汽车尾灯的控制电路由三个按键组成,分别对应左转,右转和刹车。
汽车尾灯左右两侧各有三个指示灯(用发光二极管模拟),汽3车正常远行时指示灯全灭;右转弯时,右侧3个指示灯按右循环顺序点亮;左转弯时左侧三个指示灯按左循环顺序点亮;临时刹车时所有指示灯同时闪烁。
1.3 设计特点(1)增加了新功能有应急显示,减速转弯显示,倒车显示。
(2)将转弯灯,刹车灯,倒车灯分开了,且根据不同的功能选用了不同颜色的LED灯。
这样不仅使电路更加简单,还更加符合实际情况。
(3)还特别增加了尾灯的自检功能,即尾灯不能正常工作会在仪表盘的对应灯上显示出来,及时提醒驾驶员去更换尾灯。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
深圳职业技术学院Shenzhen Polytechnic 数字系统设计技术课程设计课题名称:电子售货机学院:电子与通信工程学院班级:组员:学号:指导老师:目录一、设计方案 (1)1、功能简介 (1)2、开发测试环境选择 (1)二、售货机EDA程序设计 (1)1、定义端口与信号说明 (1)1.1输入端口 (1)1.2输出端口 (1)1.3信号 (2)2、状态模块说明 (2)2.1状态转换图 (2)2.2购买1元商品模块 (2)2.2购买5元商品模块 (3)2.3购买7元商品模块 (4)2.4顶层电路结构 (4)三、小结 (5)四、附录 (5)1、使用说明 (5)2、参考文献资料 (5)3、附表 (6)一、设计方案1、功能简介本文采用状态机的方法所设计的简易电子售货机可出售1元、5元、7元的商品,可接受1元、5元、10元的投币,可显示选择商品的价格,可找回购买后的余额。
若投币金额充足则自动给出对应的商品和自动找零,且在投币购买过程中若投币余额不足会发出警告。
在商品购买、找零完毕后,售货机会回到初始状态,顾客可进行下次购买。
另设有初始化按钮,按下之后售货机回到初始状态。
2、开发测试环境选择开发和仿真软件选择了Altera公司的综合性PLD/FPGA开发软件Quartus II 8.0,首先在Quartus II 8.0下进行程序设计,编译通过后用Quartus II 8.0进行功能仿真并检查对应的功能。
二、售货机EDA程序设计1、定义端口与信号说明1.1输入端口reset:异步复位端口,低电平有效;clk:时钟信号端口,控制状态的转换;item1:1元商品选择端口;item5:5元商品选择端口;item7:7元商品选择端口;ok:商品选择确认端口;coin1:1元投币信号端口;coin5:5元投币信号端口;coin10:10元投币信号端口。
1.2输出端口zhaoqian:退钱信号端口;jiage:对应商品价格显示端口;get1:1元商品输出端口:get5:5元商品输出端口;get7:7元商品输出端口;warn:投币金额不足提示窗口。
1.3信号s0:初始状态信号;rmb1:购买1元商品模块信号;rmb5:购买5元商品模块信号;rmb7:购买7元商品模块信号;now_state:当前信号保存变量;next_state:下一时钟上升沿读取信号保存变量。
2、状态模块说明2.1状态转换图本程序状态机设计包含4个状态s0:初始态;rmb1:1元商品购买;rmb5:5元商品购买;rmb7:7元商品购买。
2.2购买1元商品模块本模块处理当顾客选择1元商品后的处理,执行流程如下:首先价格端口显示价格为1元,顾客在按下确认键,ok<=’1’后,若投币1元,则get1<=’1’给出1元商品、zhaoqian<=0退钱0元;若投币5元,则get1<=‘1’给出1元商品、zhaoqian<=4退钱4元;若投币10元,则get1<=‘1’给出1元商品、zhaoqian<=9退钱9元。
仿真结果见图1:2.2购买5元商品模块本模块处理当顾客选择5元商品后的处理,执行流程如下:首先价格端口显示价格为5元,顾客在按下确认键,ok<=’1’后,若投币1元,则warn<=‘1’投币金额不足提示,zhaoqian<=1退钱1元;若投币5元,则get5<=‘1’给出5元商品、zhaoqian<=0退钱0元;若投币10元,则get5<=‘1’给出5元商品、zhaoqian<=5退钱5元;仿真结果见图2:2.3购买7元商品模块本模块处理当顾客选择7元商品后的处理,执行流程如下:首先价格端口显示价格为7元,顾客在按下确认键,ok<=’1’后,若投币1元,则warn<=‘1’投币金额不足提示,zhaoqian<=1退钱1元;若投币5元,则gwarn<=‘1’投币金额不足提示、zhaoqian<=5退钱5元;若投币10元,则get7<=‘1’给出7元商品、zhaoqian<=3退钱7元;仿真结果见图3:2.4顶层电路结构将售货机的VHDL生成IC连接如图4:三、小结在学期期末,我们进行了FPGA的课程设计,按老师的要求我们组选择了电子售货机的项目,并用Quartus II 8.0软件进行了程序的编写和仿真。
在设计的过程中我们小组遇到了很多的问题,在本次自动售货机我们采用状态机的方法进行设计,但我们自身对状态机的理解不够透彻导致在设计的过程中软件编译时的语法逻辑检测无法通过,比如Error (10028): Can't resolve multiple constant drivers for net "next_state.s0" at shjv.vhd(44),在并行进程中对同一信号进行了多次赋值导致了并行信号冲突问题;Error: Zero-time oscillation in node "|shouhuoji|Add0~22" at time 10.0 ns. Check the design or vector source file for combinational loop,在功能仿真时出现了“死锁”问题,最后通过查找资料,改变设计思路的方式基本解决问题。
在设计过程中我们小组经历多次失败,程序也换了很多版本,通过努力最终基本达到任务要求,虽然编写的程序存在情况考虑不足等BUG,但我们也明白了这不仅仅在意的是结果,而更注重的是过程。
四、附录1、使用说明本程序仿真方法如下:例如:在建立好仿真文件后,在开始的信号周期内为复位端reset送低电平,若要购买1元商品则在下一个时钟周期中将item1、ok以及coin1、coin5或coin10置高,则程序会给出对应的jiage、zhaoqian的处理结果。
其他模块仿真方法同理。
2、参考文献资料a.数字电路EDA设计 / 顾斌等编著. 西安电子科技大学出版社,2004.2(2010.2重印)b.FPGA/CPLD应用技术:Verilog语言版 / 王静霞主编. 北京电子工业出版社,2011.1c.百度文库3、附表简易电子售货机源代码library ieee;use ieee.std_logic_1164.all;entity shouhuoji isport(reset,clk,item1,item5,item7,coin1,coin5,coin10,ok:in std_logic;zhaoqian:out integer range 0 to 10;jiage:out integer range 0 to 10;get1,get5,get7,warn:out std_logic);end shouhuoji;architecture data of shouhuoji istype state is(s0,rmb1,rmb5,rmb7);signal next_state,now_state:state;--signal tt:integer range 0 to 50000000;begin--process(tt,clkk) --设定1s周期clk--begin-- if(clkk'event and clkk='1') then tt<=tt+1;-- if(tt=5) then-- tt<=0;clk<=not clk;-- end if;-- end process;process(clk,reset)beginif(reset='0')thennow_state<=s0;elsif(clk'event and clk='1')thennow_state<=next_state;end if;end process;process(now_state,item1,item5,item7,coin1,coin5,coin10,ok,display) begincase now_state iswhen s0=>get1<='0';get5<='0';get7<='0';warn<='0';zhaoqian<=0;if(item1='1')thennext_state<=rmb1;jiage<=1;warn<='0'; --1元购买模块elsif(item5='1')thennext_state<=rmb5;jiage<=5;warn<='0'; --5元购买模块elsif(item7='1')thennext_state<=rmb7;jiage<=7;warn<='0'; --7元购买模块elsenext_state<=s0;jiage<=0;warn<='0';end if;--------------------------------------------------------------rmb1when rmb1=>get1<='0';get5<='0';get7<='0';warn<='0';if(ok='1')thenif(coin1='1')thenget1<='1';get5<='0';get7<='0';warn<='0';zhaoqian<=0;next_state<=s0;elsif(coin5='1')thenget1<='1';get5<='0';get7<='0';warn<='0';zhaoqian<=4;next_state<=s0;elsif(coin10='1')thenget1<='1';get5<='0';get7<='0';warn<='0';zhaoqian<=9;next_state<=s0;end if;else next_state<=rmb1;end if;--------------------------------------------------rmb5when rmb5=>get5<='0';get7<='0';warn<='0';if(ok='1')thenif(coin1='1')thenget1<='0';get5<='0';get7<='0';warn<='1';zhaoqian<=1;next_state<=rmb5;elsif(coin5='1')thenget1<='0';get5<='1';get7<='0';warn<='0';zhaoqian<=0;next_state<=s0;elsif(coin10='1')thenget1<='0';get5<='1';get7<='0';warn<='0';zhaoqian<=5;next_state<=s0;end if;else next_state<=rmb5;end if;---------------------------------------------rmb7 when rmb7=>get1<='0';get5<='0';get7<='0';warn<='0';if(ok='1')thenif(coin1='1')thenget1<='0';get5<='0';get7<='0';warn<='1';zhaoqian<=1;next_state<=rmb7;elsif(coin5='1')thenget1<='0';get5<='0';get7<='0';warn<='1';zhaoqian<=5;next_state<=rmb7;elsif(coin10='1')thenget1<='0';get5<='0';get7<='1';warn<='0';zhaoqian<=3;next_state<=s0;end if;else next_state<=rmb7;end if;end case;end process;end data;。