乘法器课程设计
数字电路课程设计之乘法器精选全文完整版

基于Verilog 的乘法器设计一、设计目标使用Verilog 语言实现4bit*4bit 乘法器设计,并使用Quartes 编写程序,使用modelsin 进行仿真验证设计二、基本原理2.1半加器半加器是为两输入两输出的加法电路,输入无进位,真值表如下图所示,输入X,Y,输出C,SX Y C S 0 0 0 0 0 1 0 1 1 0 0 1 111最简积之和式为 S=X`Y+XY`=X ○+Y;C=XY. 电路图为:2.2全加器全加器是为三输入两输出,输入存在进位,真值表如下图所示,输入X,Y,Z,输出C,SX Y Z C S 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 11111化简最简积之和式为:S=X`Y`Z+X`YZ`+XY`Z`+XYZ; C=XY+XZ+YZ; 通过使用半加器组成全加器进行化简为:S=Z(X`Y`+XY)+Z`(X`Y+XY`)=Z(X ○+Y)`+Z`(X ○+Y)=X ○+Y ○+Z123YX C123123Y X`X Y`123S123C123X YSguan tian liangC 的卡诺图如下图X YZ 00 01 11 10 0 0 0 1 0 1111按两两结合 C=XY+YZ+XZ 换一种结合方式 C= XY+XY`Z+X`YZ=Z(XY`+X`Y)+XY=Z(X ○+Y)+XY 电路图如下所示(使用两个半加器与一个或门)123123X Y123123SZ123C多位二进制加法实现 2.2.1 行波进位加法器B2A3B3C3C4C2C1C0S0S1S2S3FA FALL_ADD A1B2Cout 3Cin4S5FA FALL_ADD A1B2Cout 3Cin4S5FAFALL_ADDA1B2Cout 3Cin4S5FAFALL_ADD A1B 2Cout 3Cin4S5A0B0A1B1A2行波进位加法器优点在于结构逻辑简单,缺点速度很慢,在最坏情况下,进位必须从最低有效位传到最高有效加法器,假设同时给出所有加数位,则总的最长延迟为:CinSCinCout ABCout ADD t t n t t +⨯−+=)2(ABCoutt 为最低有效级上从A 或B 到Cout 的延迟,CinCoutt 为中间级上Cin 与Cout 的延迟,CinSt 为最高有效位上从Cin 到S 的延迟。
eda乘法器课程设计

eda乘法器课程设计一、课程目标知识目标:1. 学生能理解EDA乘法器的基本原理和电路结构;2. 学生掌握数字逻辑设计的基本方法,并能够运用Verilog等硬件描述语言设计简单的乘法器;3. 学生了解不同类型乘法器的特点及其适用场合。
技能目标:1. 学生能够运用所学知识,使用EDA工具进行乘法器的原理图绘制及仿真;2. 学生通过实践操作,掌握乘法器电路的调试和优化方法;3. 学生能够分析和解决乘法器设计中出现的问题,提高问题解决能力。
情感态度价值观目标:1. 学生通过学习,增强对电子技术和数字电路的热爱,培养良好的学习兴趣;2. 学生在团队协作中,学会沟通与交流,培养合作精神和集体荣誉感;3. 学生在探索和创新过程中,形成勇于挑战、积极进取的精神风貌。
本课程针对高年级学生,结合课程性质、学生特点和教学要求,将课程目标分解为具体的学习成果。
旨在帮助学生掌握EDA乘法器的基本知识和设计方法,培养实际操作能力和团队协作精神,提高学生的问题解决能力和创新意识。
二、教学内容本章节教学内容主要包括以下几部分:1. EDA乘法器原理及分类- 按照教材相关章节,介绍乘法器的原理、分类及其优缺点;- 分析不同类型乘法器(如算术乘法器、墙上乘法器、Booth乘法器等)的工作原理及应用场景。
2. 数字逻辑设计基础- 回顾数字逻辑设计的基本概念,如逻辑门、触发器、编码器等;- 引导学生运用Verilog等硬件描述语言进行简单乘法器的设计。
3. EDA工具使用- 介绍EDA工具(如Quartus、Vivado等)的使用方法;- 指导学生绘制乘法器原理图、编写测试代码并进行仿真。
4. 乘法器电路设计与实现- 根据教学大纲,安排乘法器电路设计实践操作;- 引导学生进行电路调试、优化,并解决设计过程中出现的问题。
5. 团队协作与成果展示- 将学生分组,进行团队协作实践;- 组织学生进行成果展示,交流设计心得,提高沟通与表达能力。
计算机组成原理乘法器和除法器课程设计

哈尔滨理工大学课程设计(计算机组成原理)题目:简单模型机指令系统的设计班级:姓名:指导教师:系主任:2017年03月10日计算机组成原理(课程设计)设计过程情况表目录1.课程设计的目的 (1)2.课程设计的任务 (1)3.课程设计所用设备及所需资料 (1)4.设计内容 (1)4.1设计原理 (1)4.1.1总体概述 (1)4.1.2模型机的寻址方式 (2)4.1.3模型机微指令系统的特点 (2)4.2设计过程与步骤................................................................. 错误!未定义书签。
4.2.1. 模拟乘法除法的原理 (4)4.2.2.对应算法分配硬件 (8)4.2.3设计全新的指/微指令系统 (10)4.3设计结果及分析 (12)4.3.1汇编语言程序 (12)4.3.2程序执行跟踪 (13)5心得体会 (16)1.课程设计的目的1.在实验机上设计机器指令及对应的微指令(微程序),从而进一步掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系;2. 通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念;3. 培养综合实践及独立分析、解决问题的能力。
2.课程设计的任务针对COP2000实验仪,首先通过综合实验了解该模型机微程序控制器原理(主要指熟悉该模型机指令/微指令系统的详细情况),然后以实现二进制乘法和除法运算功能为应用目标,在COP2000的集成开发环境下,设计全新的指令系统并编写对应的微程序;并编写并运行实现乘法和除法的程序进行设计的验证。
3.课程设计所用设备及所需资料1. COP2000实验系统2. PC机( COP2000仿真软件)3. COP2000计算机组成原理实验仪说明书4.设计内容4.1设计原理4.1.1总体概述COP2000模型机包括了一个标准CPU所具备所有部件,这些部件包括:运算器ALU、累加器A、工作寄存器W、左移门L、直通门D、右移门R、寄存器组R0-R3、程序计数器PC、地址寄存器MAR、堆栈寄存器ST、中断向量寄存器IA、输入端口IN、输出端口寄存器OUT、程序存储器EM、指令寄存器IR、微程序计数器uPC、微程序存储器uM,以及中断控制电路、跳转控制电路。
移位乘法器课程设计总结

移位乘法器课程设计总结
移位乘法器是数字电路中常用的乘法算法之一,通过移位和加法操作实现两个二进制数的乘法运算。
课程设计是对相关知识进行实践和应用的过程,下面是对移位乘法器课程设计的总结:
1. 设计目标与要求:
- 理解移位乘法器的原理和操作过程;
- 掌握移位乘法器的设计步骤和流程;
- 实现一个移位乘法器的功能;
- 进行功能验证和性能评估。
2. 设计步骤:
- 确定移位乘法器的输入和输出要求;
- 根据乘法运算的原理,设计移位乘法器的数据通路和控制部分;
- 划分设计模块,确定模块之间的信号传递和交互;
- 编写移位乘法器的Verilog代码或使用硬件描述语言进行设计;
- 进行功能仿真和验证,确保设计的正确性;
- 对设计进行综合和布局布线,生成可实现的电路;
- 制作原型电路板并进行实物验证。
3. 设计过程中的注意事项:
- 合理使用硬件资源,尽量减少逻辑门的数量;
- 考虑设计的可扩展性和灵活性,使其适用于多种数据宽度的乘法运算;
- 注意时序问题,避免信号冲突和延迟;
- 对设计进行综合和布局布线时,考虑功耗和面积的优化;
- 在实物验证中,准备充分的测试用例,覆盖各种情况。
通过完成移位乘法器的课程设计,可以加深对移位乘法器原理和设计方法的理解,提高数字电路设计的能力,同时也为后续的相关课程和项目奠定基础。
乘法器计组课程设计

计算机组成原理课程设计报告班级:计算机/物联网 1504 班:杰铭学号: 20154530 完成时间: 2018.1.1一、课程设计目的1.在实验机上设计实现机器指令及对应的微指令(微程序)并验证,从而进一步掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系;2.通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念;3.培养综合实践及独立分析、解决问题的能力。
二、课程设计的任务针对COP2000实验仪,从详细了解该模型机的指令/微指令系统入手,以实现乘法和除法运算功能为应用目标,在COP2000的集成开发环境下,设计全新的指令系统并编写对应的微程序;之后编写实现乘法和除法的程序进行设计的验证。
三、课程设计使用的设备(环境)1.硬件●COP2000实验仪●PC机2.软件●COP2000仿真软件四、课程设计的具体容(步骤)1.详细了解并掌握COP 2000模型机的微程序控制器原理,通过综合实验来实现该模型机指令系统的特点:该模型机指令系统的操作码由8位机器码组成,前6位机器码用于区分操作类型,后2位机器码是在操作中涉及通用寄存器时提供通用寄存器的寻址。
进位跳转指令JC要求倒数第3、4位为00零跳转指令JZ要求倒数第3、4位为01无条件跳转指令JMP要求倒数第3、4位为11该模型机微指令系统的特点(包括其微指令格式的说明等):该模型机的微指令寄存器地址为00H-0FFH,共256*30位,每条微指令的控制字段部分有30位,控制方式采用的是直接控制而非编码控制,即一位对应一个逻辑开关的状态。
可惜的是,此微指令无跳转方式和下指字段,因而仅通过微指令无法在微指令寄存器中跳转,即在一条机器指令所对应的微程序中,只有顺序执行操作。
原系统中每条机器指令最多四个周期(当然不是必须的,可以通过机器指令的机器码的设置使一个机器指令包含更多微指令),即此模型机中每个微程序最多四条微指令,多余的空位则浮空处理。
乘位阵列乘法器设计

乘位阵列乘法器设计集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)课程设计报告课程设计题目: 4乘4位阵列乘法器设计学生姓名:杨博闻学号专业:计算机科学与技术班级: 1120701指导教师:汪宇玲2014年 1月 4日一、设计目的1.掌握乘法器的原理及其设计方法。
2 .熟练应用CPLD 设计及 EDA 操作软件。
二、设计设备1.TDN-CM+或 TDN-CM++教学实验系统一套。
2 ·PC 微机一台。
3·ispDesignEXPERT 软件模型机数据通路结构框图三、设计原理本实验用 CPLD 来设计一个 4 ×4 位乘法器,相对于画电路图输入,用 ABEL 语言描述是比较方便的。
其算式如下(其中括号中的数字表示在 ABEL 源程序描述中的功能块调用编号):a3 a2 a1 a0× b3 b2 b1 b0----------------------------------------------------------------------------------------------------------a3b0(10) a2b0(6)a1b0(3) a0b0(1)a3b1(13) a2b1(9) a1b1(5)a0b1(2)a3b2(15) a2b2(12) a1b2(8) a0b2(4) + a3b3(16) a2b3(14) a1b3(11) a0b3(7)-----------------------------------------------------------------------------------------------------------p7 p6 p5 p4 p3 p2 p1 p0四、设计步骤1.安装EDA 软件打开计算机电源,进入 Windows 系统,安装上述 ispDesignEXPERT软件。
基于fpga八位硬件乘法器课程设计

基于FPGA的八位硬件乘法器课程设计,可以分以下几个步骤进行:
1. 确定设计要求:根据要求,设计一个能对两个八位二进制数进行乘法运算的硬件电路。
需要考虑到输入、输出、各种控制信号等。
2. 确定设计方案:根据设计要求,确定具体的设计方案。
可以使用Verilog语言进行描述,包括输入输出端口的定义、状态转移的描述等。
3. 编写Verilog代码:根据设计方案,编写Verilog代码。
代码需要对各种信号进行定义,并实现相应的逻辑功能。
4. 进行仿真:在编写完代码后,进行功能仿真。
可以使用ModelSim等仿真工具进行验证。
对代码进行仿真测试,在设计出现问题时可以及时进行调试和修改。
5. 进行综合和布局布线:通过综合和布局布线操作,将Verilog代码映射到FPGA芯片上,并生成bit文件,用于烧录到FPGA芯片中。
6. 进行验证:将bit文件烧录到FPGA芯片中,进行验证。
可以通过开发板上的按键等方式,输入两个八位二进制数并进行乘法运算,同时显示结果。
设计八位硬件乘法器需要了解数字电路设计基础知识和Verilog语言的使用。
同时,需要熟练掌握FPGA开发板的使用,以及相关的开发工具(如Quartus II等)的使用。
eda乘法器课程设计

eda乘法器课程设计一、课程目标知识目标:1. 学生能理解EDA乘法器的基本原理和设计流程;2. 学生能掌握数字逻辑设计的基本方法,并运用Verilog HDL语言实现EDA 乘法器;3. 学生了解不同类型乘法器的优缺点,并能够进行比较和分析。
技能目标:1. 学生能够运用所学知识,独立完成EDA乘法器的原理图设计和代码编写;2. 学生能够利用相关软件工具进行仿真测试,验证乘法器的功能正确性和性能指标;3. 学生能够通过小组合作,共同解决乘法器设计过程中遇到的问题,提高团队协作能力。
情感态度价值观目标:1. 学生培养对数字电路设计的兴趣,增强学习电子信息的积极性;2. 学生在课程学习过程中,培养严谨的科学态度和良好的工程素养;3. 学生通过小组合作,培养团队精神,学会尊重和倾听他人意见,提高沟通表达能力;4. 学生能够认识到电子信息技术在国家发展和社会进步中的重要作用,增强社会责任感和使命感。
二、教学内容1. 数字逻辑设计基础:介绍逻辑门、组合逻辑电路和时序逻辑电路的基本原理,为乘法器设计奠定基础。
2. Verilog HDL语言:讲解Verilog的基本语法、数据类型和常用语句,使学生掌握用Verilog进行数字电路设计的方法。
3. EDA乘法器原理:分析并讲解不同类型的乘法器(如Booth乘法器、Wallace树等)的原理和结构,对比优缺点。
- 教材章节:第三章《数字系统的设计方法》4. 乘法器设计流程:- 设计原理图:指导学生根据乘法器原理绘制原理图;- 编写Verilog代码:指导学生使用Verilog语言实现乘法器功能;- 仿真测试:教授学生使用相关软件工具(如ModelSim)进行仿真测试,验证设计的正确性。
- 教材章节:第四章《数字系统的实现与验证》5. 小组讨论与实践:组织学生进行小组讨论,共同解决设计过程中遇到的问题,提高实际操作能力。
6. 性能分析与优化:指导学生分析乘法器的性能指标(如速度、面积等),探讨优化方案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要:基于VHDL的数字系统设计具有设计技术齐全、方法灵活、支持广泛等优点,同时也是EDA技术的重要组成部分.文章用VHDL语言设计了左移法和进位节省法实现的两种组合乘法器,通过功能仿真,对两种乘法器的性能进行了比较,从而得知后者的传输延迟时间小,即速度较快.通过设计实例,介绍了利用VHDL语言进行数字系统设计的方法.关键词:VHDL语言左移法进位节省法Abstract:Digital system design based on VHDL has complete design techniques, methods, the advantages of flexible and wide support, at the same time also is the important component of the EDA technology. The article using VHDL language to design the left shift method and carry save method to realize the combination of two kinds of multiplier, through the function simulation, compares the performance of the two kinds of multiplier, which the latter's small transmission delay time, namely fast. Through the design example, introduced the method of using VHDL language to design digital system.Keywords:VHDL language ,left shift method ,carry save method目录1.前言 (1)2.系统设计总述 (2)2.1 设计要求 (2)2.2系统组成.............................................. ..22.2.1 乘法器电路基本原理.............................................................32.2.2 输入数据的获得............................................................. (3)2.2.3 数据的选择输入和输出控制 (3)3.设计步骤 (4)3.1整体原理框图: (4)3.2乘法器整体电路原理图: (5)3.3输入模块: (5)3.4运算模块: (5)3.5显示控制模块: (6)3.6显示模块: (7)4.整体仿真┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉105.调试中遇到的问题及解决的方法┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉11 6.设计总结┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉12 7.参考文献┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉13附录:程序代码┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉141.前言电子EDA技术发展迅猛,逐渐在教学、科研、产品设计与制造等各方面都发挥着巨大的作用。
在教学方面:几乎所有理工科(特别是电子信息)类的高校都开设了EDA课程。
主要是让学生了解EDA的基本原理和基本概念、硬件描述系统逻辑的方法、使用EDA工具进行电子电路课程的模拟仿真实验并在作毕业设计时从事简单电子系统的设计,为今后工作打下基础。
EDA技术不单是应用于前期的计算机模拟仿真、产品调试,而且也在后期的制作、电子设备的研制与生产、电路板的焊接、器件的制作过程等有重要作用。
可以说电子EDA技术已经成为电子工业领域不可缺少的技术。
通过此次课程设计的锻炼,要求学生掌握设计乘法器电路的一般设计方法,具备初步的独立设计能力,懂得如何通过各个小程序组合成一个大程序,懂得如何通过三个控制信号进行输入输出的选择,懂得如何通过段选位选实现8位数码管依次显示乘积,被乘数与乘数,从而提高综合运用所学的理论知识独立分析和解决问题的能力,培养学生的创新精神。
2.系统设计总述设计带符号乘法器并同时要8个数码管显示结果要用到的子模块非常多,通过EDA用软件的方式设计硬件,且其到硬件系统的转换是由有关的开发软件自动完成的。
设计过程中可用有关软件进行各种仿真,整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。
2.1 设计要求设计一个能进行两个十进制数相乘的乘法器,乘数和被乘数均小于100,通过按键输入,并用数码管显示,显示器显示数字时从低位向高位前移,最低位为当前显示位。
当按下相乘键后,乘法器进行两个数的相乘运算,数码管将乘积显示出来。
2.2 系统组成图1乘法器硬件系统示意图2.2 乘法器电路基本原理纯组合逻辑构成的乘法器虽然工作速度较快,但过于占用硬件资源,难以实现宽位乘法器,由加法器构成的以时序逻辑方式设计的乘法器,具有一定的使用价值。
而且由FPGA构成实验系统后,可以很容易的用ASIC大型集成芯片来完成,性价比高,可操作性强。
其乘法原理是:乘法通过逐项移位相加原理来完成,从被乘数的最低位开始,若为1,则乘数左移后于上一次的和相加;若为0左移后以全零相加,直至被乘数的最高位。
2.2.2 输入数据的获得表1 编码器真值表2.2.3 数据的选择输入和输出控制当clk=1且reset=0时,当CH=0,DH=0时,输入被乘数A,当CH=1.DH=0时,输入乘数B,当CH=1,DH=1时,输出乘积。
3.设计步骤3.1整体原理框图:图2 乘法器系统框图3.2乘法器整体电路原理图:3.3输入模块:模块说明:由 CH,DH控制数据的输入,由SHUJU端输入数据,当CH,DH为0,0时输入被乘数,由输出端A输出,当按下“乘号键CH”即CH,DH为1,0时输入乘数,由输出端B输出,当RESET为0时输出端清零。
3.4运算模块:模块说明:分别由AO和BO端接收被乘数和乘数,由CJ端输出带符号位的二进制乘积结果。
此模块由三个子模块组成:“数字与符号分离子模块”,“乘法运算子模块”及“数字与符号重组子模块”。
数字与符号分离子模块:乘法运算子模块:数字与符号重组子模块:3.5显示控制模块:模块说明:当CH,DH为0,0时显示被乘数,当按下“乘号键CH”即CH,DH为1,0时显示乘数,当按下“等号键DH”即CH,DH为1,1时显示乘积。
3.6显示模块:模块说明:由AIN端接收要显示的二进制内容,输出转换成十进制后各位对应的数码管显示代码。
此模块由六个子模块组成:“输出数字与符号分离子模块”,“进制转换子模块”,“消零子模块”,“符号位数码管显示子模块”,“数字位数码管显示子模块”和“灭点子模块”。
此模块组成结构如下:输出数字与符号分离子模块:进制转换子模块:此模块是用来对结果进行二进制到十进制转换的,便于在显示数码管上显示。
定义3个变量A1,A2,A3,并赋初值为0,从高到低判断输入的数据A(二进制)的各个位,首先是百位,若大于一百,则A3加1,EJZ减去100;然后是十位,若大于十,则A2加1,EJZ减去10;最后是个位,直接将EJZ剩余值赋值给A1。
依次将A1,A2,A3赋值给GOUT,SOUT,BOUT输出。
消零子模块:符号位数码管显示子模块:数字位数码管显示子模块:灭点子模块:4.整体仿真仿真整体波形如下:以输入被乘数-9,乘数12,输出乘积-108为例:5.调试中遇到的问题及解决的方法1.在进行整体编译时,出现芯片的逻辑资源不足而无法继续编译的问题。
该问题困扰了我很长时间,一开始以为是程序不精简,但后来在同学的提醒下,发现原来在编译时没有设置软件的优化选项,从而导致逻辑资源不足,经设置后问题得以解决。
2.进行仿真时,发现只能显示被乘数和乘积而无法显示乘数,该问题又让我检查了很长时间,后来自己一步步仔细分析查找,终于发现原来是整体电路原理图中一根线不小心连错了,经改正后,显示结果恢复正常。
6.设计总结:通过这次时间为两周的EDA课程设计,使我更加深刻的认识到了EDA 的对电路设计的重要性,对我们电子专业学科同学发展的重要性。
同时,我也熟悉了EDA工具Quartus II软件的应用,VHDL硬件描述语言的编辑、编译、调试、仿真等,使电路设计过程由软件的描述语言到集成电路图再到功能的仿真波形。
整个过程符合逻辑、通俗易懂;在设计过程中我也遇到了许多困难,比如:VHDL语言的编译出现错误、仿真时波形出现失真或错误等。
由于Quartus II软件使用时,一个错误就会导致很多的错误出现。
所以在编写VHDL语言时,应该更加的细心和准确,才能保证设计的顺利开展。
不过在这次设计里,我虽然遇到了这样的困难,但我细心耐心的改正编译出现的错误知道编译成功。
使得我更加熟悉了VHDL语言的一些关键句,让我掌握了VHDL 语言的编写。
两周的课程设计,使我受益匪浅,让我学到了在课堂上所学不到的知识和能力。
同时,也让我明白了实践操作能力,独立思考能力和解决困难问题的能力对于我们工科同学的重要性。
最后,感谢学校为我们提供这样的实践机会,真正的提高我们的能力和综合素质。
7.参考文献:⑴王金明,《数字系统设计与Veriling HDL》.电子工业出版社2011.1⑵黄仁欣.《EDA技术实用教程》.清华大学出版社,2006⑶曹昕燕,周凤臣,聂春燕,《EDA技术实验与课程设计》.清华大学出版社,2006.5⑶杨亦华,延明,《数字电路EDA入门》,北京邮电大学出版社,2003⑸邹彦,庄严,邹宁,王宇鸿,《EDA技术与数字系统设计》,电子工业出版社,2008⑹潘松 ,黄继业《EDA技术与VHDL》,北京,清华大学出版社,2006附录:程序代码1. 输入模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY shuru ISPORT(CH,DH,RESET,CLK:IN STD_LOGIC;shuju:IN STD_LOGIC_VECTOR(4 DOWNTO 0); A,B:OUT STD_LOGIC_VECTOR(4 DOWNTO 0)); END shuru;ARCHITECTURE behave OF shuru ISBEGINPROCESS(CH,DH,shuju,RESET,CLK)BEGINIF CLK'EVENT AND CLK='1' THENIF RESET='1' THENA<="00000";B<="00000";ELSEIF CH='0' AND DH='0' THENA<=shuju;ELSIF CH='1' AND DH='0' THEN B<=shuju;ELSE NULL;END IF;END IF;END IF;END PROCESS;END behave;2.运算模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY yunsuan ISPORT(A0:IN STD_LOGIC_VECTOR(4 DOWNTO 0);B0:IN STD_LOGIC_VECTOR(4 DOWNTO 0);CJ:OUT STD_LOGIC_VECTOR(8 DOWNTO 0));END yunsuan;ARCHITECTURE BEHAVE OF yunsuan ISCOMPONENT sfflPORT(A,B:IN STD_LOGIC_VECTOR(4 DOWNTO 0);FH:OUT STD_LOGIC;C,D:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT MULPORT(E,F:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END COMPONENT;COMPONENT sfczPORT(Q:IN STD_LOGIC_VECTOR(7 DOWNTO 0);FHO:IN STD_LOGIC;CJO:OUT STD_LOGIC_VECTOR(8 DOWNTO 0)); END COMPONENT;SIGNAL C1,D1:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL FHW:STD_LOGIC;SIGNAL OUT1:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINU1:sffl PORT MAP(A=>A0,B=>B0,C=>C1,D=>D1,FH=>FHW);U2:MUL PORT MAP(E=>C1,F=>D1,Q=>OUT1);U3:sfcz PORT MAP(Q=>OUT1,FHO=>FHW,CJO=>CJ);END BEHAVE;3.数字与符号分离子模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sffl ISPORT(A,B:IN STD_LOGIC_VECTOR(4 DOWNTO 0);FH:OUT STD_LOGIC;C,D:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END sffl;ARCHITECTURE behave OF sffl ISBEGINC<=A(3 DOWNTO 0); D<=B(3 DOWNTO 0); FH<=A(4) XOR B(4);END behave;4.乘法运算子模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MUL ISPORT(E,F:IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END MUL;ARCHITECTURE behave OF MUL ISSIGNAL Q1:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL Q2:STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL Q3:STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL Q4:STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL FF0:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL FF1:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL FF2:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL FF3:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINFF0<=F(0)&F(0)&F(0)&F(0);FF1<=F(1)&F(1)&F(1)&F(1);FF2<=F(2)&F(2)&F(2)&F(2);FF3<=F(3)&F(3)&F(3)&F(3);Q1<=E AND FF0;Q2<=(E AND FF1)&"0";Q3<=(E AND FF2)&"00";Q4<=(E AND FF3)&"000";Q<=Q1+Q2+Q3+Q4;END behave;5.数字与符号重组子模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sfcz ISPORT(Q:IN STD_LOGIC_VECTOR(7 DOWNTO 0);FHO:IN STD_LOGIC;CJO:OUT STD_LOGIC_VECTOR(8 DOWNTO 0)); END sfcz;ARCHITECTURE behave OF sfcz ISBEGINCJO<=FHO & Q;END behave;6.显示控制模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY xskz ISPORT(CH:IN STD_LOGIC;DH:IN STD_LOGIC;CLK:IN STD_LOGIC;AIN:IN STD_LOGIC_VECTOR(4 DOWNTO 0); BIN:IN STD_LOGIC_VECTOR(4 DOWNTO 0); CJIN:IN STD_LOGIC_VECTOR(8 DOWNTO 0);END xskz;ARCHITECTURE behave OF xskz ISBEGINPROCESS(CH,DH,CLK)BEGINIF(CLK'EVENT AND CLK='1')THENIF(CH='0' AND DH='0')THENshuchu<=AIN(4)&"0000"&AIN(3 DOWNTO 0); ELSIF(CH='1' AND DH='0')THENshuchu<=BIN(4)&"0000"&BIN(3 DOWNTO 0); ELSEshuchu<=CJIN;END IF;END IF;END PROCESS;END BEHAVE;7.输出数字与符号分离子模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY outsffl ISPORT(AIN:IN STD_LOGIC_VECTOR(8 DOWNTO 0);fhout:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END outsffl;ARCHITECTURE behave OF outsffl IS SIGNAL B:STD_LOGIC;BEGINB<=AIN(8);PROCESS(B)BEGINCASE B ISWHEN'0'=>fhout<="0000";WHEN'1'=>fhout<="0001";WHEN OTHERS=>fhout<=NULL;END CASE;END PROCESS;shujuout<=AIN(7 DOWNTO 0);END behave;8.进制转换子模块module zhuanhuan(clk,a,bout,sout,gout); input clk;input[7:0] a;output[3:0] bout,sout,gout;reg[3:0] A1,A2,A3,bout,sout,gout;reg[7:0] aa;reg[2:0] num;always@(posedge clk)begincase(num)0:beginaa[7:0]<=a;num<=1;A1<=0;A2<=0;A3<=0;end1:beginif(aa>=100)beginA3<=A3+1;aa<=aa-100;endelse if((aa>=10)&&(aa<100)) beginA2<=A2+1;aa<=aa-10;endelse if((aa>=1)&&(aa<10)) beginA1<=aa;aa<=0;endelsebeginnum<=2;endend2:begingout<=A1;sout<=A2;bout<=A3;num<=0;enddefault:num<=0;endcaseendendmodule9.消零子模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY xiaoling ISPORT(B:IN STD_LOGIC_VECTOR(3 DOWNTO 0);S:IN STD_LOGIC_VECTOR(3 DOWNTO 0);G:IN STD_LOGIC_VECTOR(3 DOWNTO 0);BOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); GOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END xiaoling;ARCHITECTURE behave OF xiaoling ISBEGINPROCESS(B,S,G)BEGINIF(B="0000")THENIF(S="0000")THENIF(G="0000")THENBOUT<="1010";SOUT<="1010";GOUT<="1010";ELSEBOUT<="1010";SOUT<="1010";GOUT<=G;END IF;ELSEBOUT<="1010";SOUT<=S;GOUT<=G;END IF;ELSEBOUT<=B;SOUT<=S;GOUT<=G;END IF;END PROCESS;END behave;10.符号位数码管显示子模块。