EDA作业详解

合集下载

eda作业

eda作业

eda一、如图1所示,电路为二级电压串联负反馈的放大电路,其中Vs为V AC/SOURCE,其属性设置为默许值。

三极管Q2N3904的模型参数为默许值。

试用EWB软件作如下的分析:(1)求直流工作点;(2)求无负反馈(即无电阻Rf)时的输入电阻、输出电阻、电压增益和上限截止频率;(3)当电阻Rf别离为6.2kΩ、15kΩ和30kΩ时的反馈深度,并总结反馈深度对放大电路性能的阻碍。

(25分)Re1300Rb420kRs 200Rf6.2kVcc12VdcCe210uCe110uR55kQ2Q2N3904Cb22.2uRb3300kVoutQ1Q2N3904Vs1Vac 0VdcCb12.2uVinRe2680Rb1300kCb32.2u Re3820Rc15.1kR2b20kRc25.1kIb=1.11uA, Ic=126.121uA, Uce=11.242;图二Ui=986.856mV, Ii=77.076uA, Uo=3.118V; Ri=Ui/Ii=986.856mV/77.076uA=12.8K。

Uo1=5.193V;Ro=(Uo1/Uo-1)*R5=3.4KA=Uo/Ui=3.118V/986.856mV=3.15;Af=2.462V/987.371mV=2.5Af=2.803V/987.371mV=2.8Af=2.947V/986.945mV=3反馈深度1+AF=A/Af;由上可得:Af减小二级电压串联负反馈:Ri=Ri/(1+Af);Ro=Ro*(1+Af);使的Ri减小Ro增大;二、设计题。

设计一个水温操纵系统。

(40分)大体要求:一升水由1kW的电炉加热,要求水温能够在必然范围内由人工设定,并能在环境温度降低时实现自动调整,以维持设定的温度大体不变。

达到的性能指标:①温度设定范围:40~90℃,最小区分度为1℃;②操纵精度:温度操纵的静态误差≤1℃;③用十进制数码显示实际水温;④能打印实测水温值;⑤具有通信能力,可接收其他数据设备发来的命令,或将结果传送到其他数据设备。

EDA实验课程大作业报告:设计制作一个用于十字路口的交通灯控制器

EDA实验课程大作业报告:设计制作一个用于十字路口的交通灯控制器

交通灯控制器设计一.系统功能设计要求设计制作一个用于十字路口的交通灯控制器,要求如下:(1)南北和东西方向各有一组红、绿、黄灯来指挥交通,持续时间分别为25S,20S,和5S。

(2)当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止。

(3)当特殊情况结束后,控制器恢复原来状态,继续正常运行。

(4)用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间。

二.设计原理1.交通灯控制器的状态转换根据题目要求将将红绿灯的状态转换列成如下表:2.设计方案1)由于交通灯需要使用2位7段LED数码管指示通行剩余时间,故采用LED动态扫描方式显示当前时间。

频率设定CLK1k对应的频率为50MHZ。

2)控制模块是交通灯的核心,主要控制交通灯按工作顺序自动变换,同时控制倒计时模块工作,每当倒计时回零时,控制模块接收到一个计时信号,从而控制交通灯进入下一个工作状态。

3)每个方向有一组2位倒计时器模块,用以显示该方向交通灯剩余的点亮时间。

4)显示模块由两部分组成,一是由七段数码管组成的倒计时显示器,每个方向两个七段数码管;二是由发光二极管代替的交通灯,每个方向3个发光二极管。

三.变量符号说明其中,CLK1K为系统时钟信号输入端,SN为禁止通行信号输入通行信号输入端,light0为东西红灯信号输出端,light1为东西黄灯信号输出端,light2为东西绿灯信号输出端,light3为南北红灯信号输出端,light4为南北黄灯信号输出端,light5为南北绿灯信号输出端,led1、led2、led3、led4为数码管地址选择信号输出端。

四.代码说明library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Hongld ISport (clk1k,SN:in std_logic; --SN紧急情况led1, led2, led3, led4 :out std_logic_vector (6 downto 0);--显示管显示时间用light:out std_logic_vector (5 downto 0)); --红绿黄灯end Hongld;architecture traffic1 of Hongld ISsignal S:std_logic_vector (1 downto 0); --状态signal DXT:std_logic_vector(7 downto 0):=X"01"; --东西方向时间signal NBX:std_logic_vector(7 downto 0):=X"01"; --南北方向时间signal ART,AGT,AYT,BRT,BGT,BYT: std_logic_vector(7 downto 0); --红绿黄灯信号signal temp: integer range 0 to 49999999; --产生1s计数器时计数signal clk: std_logic;beginART<="00100101";AGT<="00100000";AYT<="00000100";BRT<="00100101";BGT<="00100000";BYT<="00000100";process(clk1k) -- 选频率为50MHZ beginif (clk1k'event and clk1k='1') thenif temp=49999999 thentemp<=0;clk<='1';elsetemp<=temp+1;clk<='0';end if;end if;end process;process(clk,DXT,NBX) --状态转换进程beginif clk'event and clk ='1' thenif(DXT ="00000001")OR (NBX = "00000001") then S<=S+1;else S<=S;end if; --状态转换结束end if;end process;process (clk,SN,S) --倒计时模块beginif SN = '1' then DXT<=DXT; NBX<=NBX;elseif clk'event and clk='1' thenif (DXT="0000000") OR (NBX="00000000") thencase S ISwhen "00"=>DXT<=ART; NBX<=BGT; --南北红灯、东西绿灯when "01"=>NBX<=BYT; --南北红灯、东西黄灯when "10"=>DXT<=AGT; NBX<=BRT; --南北绿灯、东西红灯when "11"=>DXT<=AYT; --南北黄灯、东西红灯when others=>NULL;end case;end if;if DXT/="00000000" thenif DXT(3 downto 0)= "0000" thenDXT(3 downto 0)<="1001";DXT(7 downto 4)<=DXT(7 downto 4)-1;else DXT(3 downto 0)<=DXT(3 downto 0)-1;DXT(7 downto 4)<=DXT(7 downto 4);end if;end if;if NBX/="00000000" thenif NBX(3 downto 0)="0000" thenNBX(3 downto 0)<="1001";NBX(7 downto 4)<=NBX(7 downto 4)-1;else NBX(3 downto 0)<=NBX(3 downto 0)-1;NBX(7 downto 4)<=NBX(7 downto 4);end if;end if;end if;end if;end process; --倒计时模块结束process(DXT,NBX,S,SN) --显示模块begincase NBX(3 downto 0) iswhen "0000"=>led1<="1000000";when "0010"=>led1<="0100100"; when "0011"=>led1<="0110000"; when "0100"=>led1<="0011001"; when "0101"=>led1<="0010010"; when "0110"=>led1<="0000010"; when "0111"=>led1<="1111000"; when "1000"=>led1<="0000000"; when "1001"=>led1<="0010000"; when others=>led1<="1111111"; end case;case NBX(7 downto 4) iswhen "0000"=>led2<="1000000"; when "0001"=>led2<="1111001"; when "0010"=>led2<="0100100"; when "0011"=>led2<="0110000"; when "0100"=>led2<="0011001"; when "0101"=>led2<="0010010"; when "0110"=>led2<="0000010"; when "0111"=>led2<="1111000"; when "1000"=>led2<="0000000"; when "1001"=>led2<="0010000"; when others=>led2<="1111111"; end case;case DXT(3 downto 0) iswhen "0000"=>led3<="1000000"; when "0001"=>led3<="1111001"; when "0010"=>led3<="0100100"; when "0011"=>led3<="0110000"; when "0100"=>led3<="0011001"; when "0101"=>led3<="0010010"; when "0110"=>led3<="0000010"; when "0111"=>led3<="1111000"; when "1000"=>led3<="0000000"; when "1001"=>led3<="0010000"; when others=>led3<="1111111"; end case;case DXT(7 downto 4) iswhen "0000"=>led4<="1000000"; when "0001"=>led4<="1111001"; when "0010"=>led4<="0100100";when "0100"=>led4<="0011001";when "0101"=>led4<="0010010";when "0110"=>led4<="0000010";when "0111"=>led4<="1111000";when "1000"=>led4<="0000000";when "1001"=>led4<="0010000";when others=>led4<="1111111";end case;if SN ='1' then light<="001001";elsecase S ISwhen "00"=>light<="010001";when "01"=> light <="100001";when "10"=> light <="001010";when "11"=> light <="001100";when others=>NULL;end case;end if;end process;end traffic1;五.仿真波形图仿真时序波形图。

EDA作业

EDA作业

1.简单PLD器件包括哪几种类型的器件?他们之间有什么相同点和不同点?答:PLD器件一般可分为4种:PROM、PLA、PAL、GAL器件相同点:简单PLD的典型结构是由与非门阵列、或门阵列组成,能够以“积之和”的形式实现布尔逻辑函数,因为其任意一个组合逻辑都可以用“与或”表达式来描述,所以能够完成大量的组合逻辑功能,并且具有较高的速度和较好的性能。

不同点:PROM:(1)与阵列固定,或阵列可编程(2)当输入的数目太大时,器件功耗增加,巨大阵列开关时间也会导致其速度缓慢,但其价格低,易于编程,没有布局、布线问题,性能完全可以预测。

PLA:(1)与阵列和或阵列都可编程(2)由于与阵列可编程,使得PROM中由于输入增加而导致规模增加的问题不复存在,从而有效地提高芯片的利用率,其用于含有复杂的随机逻辑值换的场合是较为理想,但其慢速特性和相对高的价格妨碍了它被广泛使用。

PAL:(1)或阵列固定,与阵列可编程(2)与阵列可编程特性使输入项可以增多,而固定的或阵列又使器件得以简化。

在这种结构中,每个输出是若干乘积项之和,乘积项数目有时固定的。

其结构对于大多数逻辑函数是有效的,同时此结构也提供了较高的性能和速度,一度成为PLD发展史的主流。

GAL:其吸收先进的浮栅技术,并与CMOS的静态RAM结合,成了E2PROM 技术,从而使GAL具有了可电擦写、可重复编程、可设置加密功能。

GAL的输出可由用户来定义,他的每个输出端都集成着一个可编程的输出逻辑宏单元。

2.Altera公司MAX7000系列CPLD有什么特点?MAX7000系列是高密度、高性能的CMOS CPLD,采用先进的0.8umCMOS EEPROM技术制造,它提供600~5000可用门,引线端子到引线端子的延时为6ns,计数器频率可达151.5MHz,它主要有逻辑阵列块、宏单元、扩展乘积项、可编程连线阵列和I/O控制模块组成。

eda作业讲解

eda作业讲解

eda作业讲解作业讲解2-2 什么是基于乘积项的可编程逻辑结构?什么是基于查找表的可编程逻辑结构?答:GAL、CPLD 之类都是基于乘积项的可编程结构;即包含有可编程与阵列和固定的或阵列的PAL(可编程阵列逻辑)器件构成。

FPGA(现场可编程门阵列)是基于查找表的可编程逻辑结构。

2-4 与传统的测试技术相⽐,边界扫描技术有何特点?答:使⽤BST(边界扫描测试)规范测试,不必使⽤物理探针,可在器件正常⼯作时在系统捕获测量的功能数据。

克服传统的外探针测试法和“针床”夹具测试法来⽆法对IC 内部节点⽆法测试的难题。

2-5 解释编程与配置这两个概念。

答:编程—基于电可擦除存储单元的EEPROM 或Flash 技术。

CPLD ⼀股使⽤此技术进⾏编程。

CPLD 被编程后改变了电可擦除存储单元中的信息,掉电后可保存。

电可擦除编程⼯艺的优点是编程后信息不会因掉电⽽丢失,但编程次数有限,编程的速度不快。

配置—基于SRAM 查找表的编程单元。

编程信息是保存在SRAM 中的,SRAM 在掉电后编程信息⽴即丢失,在下次上电后,还需要重新载⼊编程信息。

⼤部分FPGA 采⽤该种编程⼯艺。

该类器件的编程⼀般称为配置。

对于SRAM型FPGA 来说,配置次数⽆限,且速度快;在加电时可随时更改逻辑;下载信息的保密性也不如电可擦除的编程。

3-2 图3-16所⽰的是4选1多路选择器,试分别⽤IF_THEN 语句和CASE语句的表达⽅式写出此电路的VHDL程序,选择控制信号s1和s0的数据类型为STD_LOGIC_VECTOR;当s1=’0’,s0=’0’;s1=’0’,s0=’1’;s1=’1’,s0=’0’和s1=’1’,s0=’1’时,分别执⾏y<=a、y<=b、y<=c、y<=d。

解1:⽤IF_THEN语句实现4选1多路选择器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux41 ISPORT (a,b,c,d: IN STD_LOGIC;s0: IN STD_LOGIC;s1: IN STD_LOGIC;y: OUT STD_LOGIC);END ENTITY mux41;ARCHITECTURE if_mux41 OF mux41 ISSIGNAL s0s1 : STD_LOGIC_VECTOR(1 DOWNTO 0);--定义标准逻辑位⽮量数据BEGINs0s1<=s1&s0 --s1相并s0,即s1与s0并置操作PROCESS(s0s1,a,b,c,d)BEGINIF s0s1 = "00" THEN y <= a;ELSIF s0s1 = "01" THEN y <= b;ELSIF s0s1 = "10" THEN y <= c;ELSE y <= d;END IF;END PROCESS;END ARCHITECTURE if_mux41;解2:⽤WHEN_ELSE语句实现4选1多路选择器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux41 ISPORT (a,b,c,d: IN STD_LOGIC;s0: IN STD_LOGIC;s1: IN STD_LOGIC;y: OUT STD_LOGIC);END ENTITY mux41;ARCHITECTURE case_mux41 OF mux41 ISSIGNAL s0s1 : STD_LOGIC_VECTOR(1 DOWNTO 0);--定义标准逻辑位⽮量数据类型BEGINs0s1<=s1&s0 --s1相并s0,即s1与s0并置操作y<=a when s0s1=”00” elseb when s0s1=”01” elsec when s0s1=”10” elsed ;End;解3:⽤CASE语句实现4选1多路选择器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux41 ISPORT (a,b,c,d: IN STD_LOGIC;s0: IN STD_LOGIC;s1: IN STD_LOGIC;y: OUT STD_LOGIC);END ENTITY mux41;ARCHITECTURE case_mux41 OF mux41 ISSIGNAL s0s1 : STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINs0s1<=s1&s0PROCESS(s0s1,a,b,c,d)BEGINCASE s0s1 IS --类似于真值表的case语句WHEN "00" => y <= a;WHEN "01" => y <= b;WHEN "10" => y <= c;WHEN "11" => y <= d;WHEN OTHERS =>NULL ;END CASE;END PROCESS;END ARCHITECTURE case_mux41;3-6 图3-18是⼀个含有上升沿触发的D触发器的时序电路(sxdl),试写出此电路的VHDL设计⽂件。

集成电路设计EDA工具应用作业指导书

集成电路设计EDA工具应用作业指导书

集成电路设计EDA工具应用作业指导书第1章 EDA工具概述 (5)1.1 EDA工具发展历程 (5)1.2 EDA工具在集成电路设计中的作用 (5)1.3 常用EDA工具简介 (6)第2章集成电路设计流程 (6)2.1 设计准备阶段 (6)2.1.1 需求分析 (6)2.1.2 技术选型 (6)2.1.3 设计规划 (6)2.1.4 电路架构设计 (6)2.2 设计实现阶段 (6)2.2.1 电路设计 (7)2.2.2 仿真验证 (7)2.2.3 布局布线 (7)2.2.4 版图设计 (7)2.3 设计验证阶段 (7)2.3.1 功能验证 (7)2.3.2 时序验证 (7)2.3.3 电源完整性分析 (7)2.3.4 热分析 (7)2.4 设计后处理阶段 (7)2.4.1 版图检查 (7)2.4.2 后仿真分析 (7)2.4.3 生产数据 (7)2.4.4 文档编写 (7)第3章数字集成电路设计 (7)3.1 数字电路设计基础 (8)3.1.1 数字逻辑元件 (8)3.1.2 组合逻辑电路设计 (8)3.1.3 硬件描述语言(HDL) (8)3.2 逻辑合成与优化 (8)3.2.1 逻辑合成 (8)3.2.2 逻辑优化 (8)3.2.3 EDA工具在逻辑合成与优化中的应用 (8)3.3 时序分析 (8)3.3.1 时序分析基础 (9)3.3.2 时序约束与优化 (9)3.3.3 EDA工具在时序分析中的应用 (9)3.4 电源网络设计 (9)3.4.1 电源网络设计基础 (9)3.4.2 电源网络设计方法 (9)3.4.3 EDA工具在电源网络设计中的应用 (9)第4章模拟集成电路设计 (9)4.1 模拟电路设计基础 (9)4.1.1 模拟电路概述 (9)4.1.2 模拟电路设计流程 (9)4.1.3 模拟电路设计方法 (9)4.2 模拟电路仿真 (9)4.2.1 仿真概述 (10)4.2.2 仿真工具与流程 (10)4.2.3 仿真参数设置与优化 (10)4.3 模拟电路布局与布线 (10)4.3.1 布局与布线概述 (10)4.3.2 布局设计 (10)4.3.3 布线设计 (10)4.4 模拟电路后处理 (10)4.4.1 后处理概述 (10)4.4.2 版图检查与修正 (10)4.4.3 后仿真与功能验证 (10)4.4.4 生产工艺与封装 (10)第5章混合信号集成电路设计 (10)5.1 混合信号电路设计基础 (10)5.1.1 混合信号电路概述 (11)5.1.2 混合信号电路设计流程 (11)5.1.3 混合信号电路关键功能指标 (11)5.2 混合信号电路仿真 (11)5.2.1 仿真方法 (11)5.2.2 仿真工具 (11)5.2.3 仿真步骤 (12)5.3 混合信号电路布局与布线 (12)5.3.1 布局与布线概述 (12)5.3.2 布局与布线原则 (12)5.3.3 布局与布线工具 (12)5.4 混合信号电路后处理 (12)5.4.1 后处理概述 (12)5.4.2 后处理流程 (12)5.4.3 后处理工具 (13)第6章射频集成电路设计 (13)6.1 射频电路设计基础 (13)6.1.1 射频信号特性 (13)6.1.2 射频电路元件 (13)6.1.3 射频电路拓扑 (13)6.2 射频电路仿真 (13)6.2.1 电路仿真原理 (13)6.2.2 仿真工具及参数设置 (13)6.2.3 仿真结果分析 (14)6.3 射频电路布局与布线 (14)6.3.1 布局原则 (14)6.3.2 布线技巧 (14)6.3.3 射频电路版图设计 (14)6.4 射频电路后处理 (14)6.4.1 参数提取 (14)6.4.2 功能评估 (14)6.4.3 优化策略 (14)第7章系统级集成电路设计 (14)7.1 系统级电路设计基础 (14)7.1.1 设计流程概述 (15)7.1.2 设计规范与要求 (15)7.1.3 顶层模块划分 (15)7.1.4 通信协议与接口设计 (15)7.2 系统级电路仿真 (15)7.2.1 仿真工具与流程 (15)7.2.2 仿真模型与参数设置 (15)7.2.3 功能仿真与功能仿真 (15)7.2.4 仿真结果分析 (15)7.3 系统级电路布局与布线 (15)7.3.1 布局布线概述 (15)7.3.2 布局布线策略与方法 (15)7.3.3 布局布线工具与流程 (16)7.3.4 布局布线优化与后处理 (16)7.4 系统级电路后处理 (16)7.4.1 后处理概述 (16)7.4.2 版图检查与修正 (16)7.4.3 参数提取与后仿真 (16)7.4.4 设计交付与生产 (16)第8章设计验证与测试 (16)8.1 功能验证 (16)8.1.1 验证目的 (16)8.1.2 验证方法 (16)8.1.3 验证步骤 (16)8.2 时序验证 (17)8.2.1 验证目的 (17)8.2.2 验证方法 (17)8.2.3 验证步骤 (17)8.3 功耗验证 (17)8.3.1 验证目的 (17)8.3.2 验证方法 (17)8.3.3 验证步骤 (17)8.4 DFT与测试 (18)8.4.1 DFT(Design for Testability)设计 (18)8.4.2 测试方法 (18)8.4.3 测试步骤 (18)第9章设计收敛与优化 (18)9.1 设计收敛策略 (18)9.1.1 确定设计目标 (18)9.1.2 分阶段收敛 (18)9.1.3 迭代优化 (18)9.1.4 设计收敛监控 (19)9.2 逻辑合成优化 (19)9.2.1 逻辑简化 (19)9.2.2 逻辑层次优化 (19)9.2.3 时序优化 (19)9.2.4 功耗优化 (19)9.3 布局与布线优化 (19)9.3.1 布局优化 (19)9.3.2 布线优化 (19)9.3.3 热点分析与优化 (19)9.4 电源网络优化 (19)9.4.1 电源规划 (19)9.4.2 电源网络分割 (19)9.4.3 电源网络优化算法 (20)9.4.4 电源噪声分析与控制 (20)第10章 EDA工具在特定领域应用 (20)10.1 EDA工具在嵌入式系统设计中的应用 (20)10.1.1 硬件描述语言(HDL)设计 (20)10.1.2 仿真验证 (20)10.1.3 逻辑综合 (20)10.1.4 布局布线 (20)10.2 EDA工具在人工智能芯片设计中的应用 (20)10.2.1 高层次综合 (21)10.2.2 基于FPGA的加速 (21)10.2.3 数据流优化 (21)10.3 EDA工具在物联网芯片设计中的应用 (21)10.3.1 低功耗设计 (21)10.3.2 射频设计 (21)10.3.3 系统集成 (21)10.4 EDA工具在汽车电子设计中的应用 (21)10.4.1 功能安全 (21)10.4.2 硬件在环仿真 (21)10.4.3 系统级设计 (22)第1章 EDA工具概述1.1 EDA工具发展历程电子设计自动化(Electronic Design Automation,EDA)工具起源于20世纪60年代,集成电路(Integrated Circuit,IC)技术的飞速发展,EDA工具逐渐成为集成电路设计领域不可或缺的辅助工具。

EDA大作业2 设计一个循环显示电路

EDA大作业2 设计一个循环显示电路

EDA大作业2 设计一个循环显示电路
一、目的
学习使用硬件描述语言设计数字电路方法。

二、任务
在FPGA实验箱上设计一个循环显示电路。

要求:在四位数码管上左移循环显示1, 9, 3, 5, 1, 9, ……;按下复位键后输出显示为0000;按下暂停键后循环停止;使用实验箱上50MHz晶振作为时钟源。

三、内容及步骤
1. 学习用硬件描述语言设计并完成分频功能,建议将50MHz分到5Hz;
2. 学习用状态机设计并完成循环显示功能;
3. 复习用波形仿真检查电路功能是否正确;
4. 使用State Machine Viewer功能观看状态转换图,检查编写的状态机是否正确;(自学,不检查)。

5. 下载到实验箱上验证功能。

四、验收步骤
整个project下载实现全部功能后,才能开始验收。

请同学们首先按以下步骤自查,做的过程中可以答疑,但每人只有一次验收机会。

1. 电路仿真及功能实现;
2. 循环显示电路下载及功能演示;
3. 验收后,上传全部设计文档
StateNumbers:S0:9351 s1:3519 s2:5193 s3:1935 Input : Reset pause clk
Output:Y11~Y0。

(完整word版)EDA计算器设计大作业

(完整word版)EDA计算器设计大作业

计算器设计专业:电子信息工程设计者:本文介绍了一个简单的计算器的设计,该设计采用了现场可编程逻辑器件FPGA设计,并基于VHDL 语言实现加减乘除功能,并用十进制显示在数码管上.系统由计算部分、输入部分、选择部分、输出部分组成,计算部分为加法器、减法器、乘法器和除法器组成.使用Altera公司的QuartusII开发软件进行功能仿真并给出仿真波形,并下载到试验箱,用实验箱上的按键开关模拟输入,用数码管显示十进制计算结果.通过外部按键可以完成四位二进制数的加、减、乘、除四种运算功能,其结果简单,易于实现.关键字:VHDL,计算器,QuartusII一.实验目的 (4)二、流程图 (5)三.顶层原理图 (5)四、各个模块 (7)(1)加法器模块 (7)1、封装元件 (7)2、加法器程序 (7)3、仿真结果 (8)(2)减法器模块 (9)1、封装元件 (9)2、减法器程序 (10)3、仿真结果 (11)4、硬件运行结果 (11)(3)乘法器模块 (12)1、封装元件 (12)2、乘法器的设计思想 (13)3、乘法器程序 (14)4、仿真结果 (14)5、硬件运行结果 (15)(4)除法器模块 (16)1、封装元件 (16)2、除法器设计思想 (16)3、除法器程序 (16)4、仿真结果 (17)5、硬件运行结果 (17)(5)8位除法器 (18)1、封装元件 (18)2、8位除法器设计思想 (19)3、8位除法器程序 (19)4、仿真结果 (22)(6)数码管七段译码电路 (22)1、封装元件 (22)2、共阴极七段显示码十六进制转换表 (23)3、七段译码器程序 (23)4、仿真结果 (24)(7)选择模块 (24)1、封装元件 (24)2、程序 (25)五、管脚锁定 (26)六、小结与收获 (26)一.实验目的1、熟悉QuartusII软件的相关操作,掌握数字电路设计的基本流程.2、介绍QuartusII 的软件,掌握基本的设计思路,软件环境参数配置,仿真,管脚分配,下载等基本操作。

EDA大作业 课程设计 简易计算器

EDA大作业 课程设计 简易计算器

在掌握常用数字电路功能和原理的基础上,根据EDA技术课程所学知识,利用硬件描述语言Verilog HDL、EDA软件Quartus II和硬件平台Cyclone/Cyclone II FPGA进行电路系统的设计。

本次实验我完成的内容是简单计算器的设计,下面我简单的进行一下原理的阐述。

设计一个简单计算器,输入为8位二进制数,分别用两位数码管显示,输出的计算结果为16位二进制数,并用四位数码管显示,能够实现+、-、 *、/ 四种运算,其中除法的结果显示分为商和余数两部分,分别用两位数码管显示。

为了完成要求的效果显示,我先设计了一个简单的四则运算器,为了使其结果能清楚的看到,所以计算器模块和一个7段数码管模块连接。

实验要求,输入分别用两位数码管显示,输出用四位数码管显示,所以用一个3—8译码器和数码管连接,通过开关控制,形成动态显示。

从左向右,依次是第一位数码管显示a的高四位,第二位数码管显示a的低四位;第三位数码管显示b的高四位,第四位数码管显示b的低四位;第五位数码管到第八位数码管显示输出的结果。

通过改变时钟,使其看起来像同时显示在数码管上。

设计流程如下图,分别用两个数码管表示八位二进制数,用一个case 语句表示输入数值采用哪种运算方式,分别用00,01,10,11表示加,减,乘,除。

用3—8译码器选择从哪个数码管输出。

硬件流程图输出结果 A. B 的显示软件流程图LED 灯接线部分显示:中心控制 复位编码 数码管输出输入A 输入B 运算选择C 输出out L E D 8 L E D 7 L E D 6 L E D 5 L E D 4 L E D 3 L E D 2 L E D 1第三章程序简单计算器的程序如下:module jsq9(a,b,c,Dout,count,clk,rst);input[7:0]a,b;input clk,rst;input[1:0]c;output[6:0]Dout;output [2:0]count;reg[6:0]Dout;reg[2:0]count;reg[15:0]out;reg[6:0] LED7S1,LED7S2,LED7S3,LED7S4, LED7S5,LED7S6,LED7S7,LED7S8; DECL7S u1(.A(a[7:4]) , .LED7S(LED7S1));DECL7S u2(.A(a[3:0]) , .LED7S(LED7S2));DECL7S u3(.A(b[7:4]) , .LED7S(LED7S3));DECL7S u4(.A(b[3:0]) , .LED7S(LED7S4));DECL7S u5(.A(out[15:12]) , .LED7S(LED7S5));DECL7S u6(.A(out[11:8]) , .LED7S(LED7S6));DECL7S u7(.A(out[7:4]) , .LED7S(LED7S7));DECL7S u8(.A(out[3:0]) , .LED7S(LED7S8));reg[7:0]out1,out2;always@(a,b,c,Dout,count,clk,rst)case(c)2'b00:out=a+b;2'b01:out=a-b;2'b10:out=a*b;2'b11:beginout1=a/b;out2=a%b;out={out1,out2};enddefault:;endcasealways@(posedge clk or negedge rst)beginif(!rst)count<=3'b000;else if(count==3'b111)count<=3'b000;elsecount<=count+3'b001;endalways@(posedge clk)begincase(count)3'b000: Dout<=LED7S1;3'b001:Dout<=LED7S2;3'b010:Dout<=LED7S3;3'b011:Dout<=LED7S4;3'b100: Dout<=LED7S5;3'b101:Dout<=LED7S6;3'b110:Dout<=LED7S7;3'b111:Dout<=LED7S8;endcaseendendmodulemodule DECL7S (A, LED7S);input [3:0] A;output [6:0] LED7S;reg [6:0] LED7S;always @(A)begincase(A)4'b0000 : LED7S<=7'b0111111; 4'b0001: LED7S <= 7'b0000110 ; 4'b0010: LED7S <= 7'b1011011; 4'b0011: LED7S <= 7'b1001111; 4'b0100: LED7S <= 7'b1100110 ; 4'b0101: LED7S <= 7'b1101101; 4'b0110: LED7S <= 7'b1111101 ; 4'b0111: LED7S <= 7'b0000111 ; 4'b1000: LED7S <= 7'b1111111 ; 4'b1001: LED7S <= 7'b1101111 ; 4'b1010: LED7S <= 7'b1110111 ; 4'b1011: LED7S <= 7'b1111100 ; 4'b1100: LED7S <= 7'b0111001 ;4'b1101: LED7S <= 7'b1011110 ; 4'b1110: LED7S <= 7'b1111001 ; 4'b1111: LED7S <= 7'b1110001 ; endcaseendendmodule第四章模块连接在本程序中,共由三个模块组成,第一个模块是一个四选一多路器其仿真图为:第二个模块是7段数码管显示程序如下module DECL7S (A, LED7S);input [3:0] A;output [6:0] LED7S;reg [6:0] LED7S;always @(A)begincase(A)4'b0000 : LED7S<=7'b0111111;4'b0001: LED7S <= 7'b0000110 ;4'b0010: LED7S <= 7'b1011011;4'b0011: LED7S <= 7'b1001111;4'b0100: LED7S <= 7'b1100110 ;4'b0101: LED7S <= 7'b1101101;4'b0110: LED7S <= 7'b1111101 ;4'b0111: LED7S <= 7'b0000111 ;4'b1000: LED7S <= 7'b1111111 ;4'b1001: LED7S <= 7'b1101111 ;4'b1010: LED7S <= 7'b1110111 ;4'b1011: LED7S <= 7'b1111100 ;4'b1100: LED7S <= 7'b0111001 ;4'b1101: LED7S <= 7'b1011110 ;4'b1110: LED7S <= 7'b1111001 ;4'b1111: LED7S <= 7'b1110001 ;endcaseendendmodule仿真图如下:把这个两个模块用一个3—8译码器进行连接,使其达到实验的要求。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《EDA技术(II)》课程论文题目:基于VHDL的数字频率计设计学院:信息与电气工程学院专业:电气工程及其自动化姓名:曹家华182440027王媛182440033高琳185140054 指导教师:郑伟成绩:完成日期:2016 年7 月10 日随着电子技术的发展,当前数字系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。

推动该潮流迅猛发展的引擎就是日趋进步和完善的设计技术。

目前数字频率计的设计可以直接面向用户需求,根据系统的行为和功能要求,自上至下的逐层完成相应的描述、综合、优化、仿真与验证,知道生成器件。

上述设计过程除了系统行为和功能描述以外,其余所有的设计过程几乎都可以用计算机来自动地完成,也就是说做到了电子设计自动化(EDA)这样做可以大大地缩短系统的设计周期,以适应当今品种多、批量小的电子市场的需求,提高产品的竞争能力。

1.设计内容分析数字频率计的功能,完成功能模块的划分,分别用VHDL语言完成底层模块的设计和以原理图的方法完成顶层模块的设计,分别对各个模块以及顶层模块进行仿真分析,最后在硬件开发平台上进行测试。

2.设计原理频率信号易于传输,抗干扰性强,可以获得较好的测量精度。

因此,频率检测是电子测量领域最基本的测量之一。

频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。

通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为1s。

闸门时间可以根据需要取值,大于或小于1S都可以。

闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。

闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。

一般取1s作为闸门时间。

3.设计功能四位十进制数字频率计用四组七段译码显示的数字频率计,其频率测量范围为1Hz~10kHz。

采用记忆显示的方法,即在测量过程中不刷新数据,等数据过程结束后才显示测量结果,给出待测信号的频率值,并保存到下一次测量结束,显示时间不少于1秒。

4.频率计方案的设计根据频率计的测频原理,可以选择合适的时基信号即闸门时间,对输入被测信号脉冲进行计数,实现测频的目的。

在这个设计前,我们加入了一项测试周期的功能。

在实验过程中,要在频率计提供的基信号和输入信号之间做出选择,充当时基信号即闸门时间。

当测频率的时候,要以输入信号作为时钟信号,因为输入信号的频率大于频率计提供的基准频率,在频率计提供的基准信号周期内,计算输入信号的周期数目,再乘以频率计基准频率,就是输入信号的频率值了。

此时的时基信号为频率计的基准信号。

当测周期的时候,要以频率及提供的基准信号作为时钟信号,因为频率及提供的时基频率大于输入信号的频率,在输入信号周期内,计算频率计提供的基准信号的周期数目,再乘以基准信号频率,就是输入信号的周期值了。

此时的时基信号为输入信号。

㈠方案设计思路1.时基的设计输入信号是随意的,没法预知其频率是多少,如何选取频率计提供的基准信号是关键。

测量频率时,在某个挡进行测量的时候,就需要提供该挡的时基。

在10KHZ挡,该挡最大读数为9.99KHZ,同时也说明最小的读数是0.0KHZ,所以提供的时基应该是频率为0.01KHZ 的脉冲.同样的方法100KHZ挡提供的时基应该是频率为0.1KHZ的脉冲,1MHZ挡提供的时基应该是频率为1KHZ的脉冲。

同样用到3个分频器,但是节约了资源。

可以考虑使用状态机来实现这3种时基,因为采用状态机来控制时序很清楚,不容易出错。

状态机用1KHZ(周期为1ms)的脉冲信号触发,因为所要生产的时基中,频率最大的就是1KHZ的脉冲,要产生高电频为10ms和1ms的脉冲信号,可以采用100个状态的状态机,从状态1,状态2……到状态100.2.计数器的设计各个档之间的转换应遵循设计要求,要根据在时基有效时间内的计数值进行判断。

计数器可以直接定义成一个整形信号,这样计数器(即加1)就十分方便,只要使用语句“计数器<=计数器+1;”就可以。

但这个计数值要作为显示输出,就要将这个计数器用个位、十位,百位分开表示,而且要遵循“加一逢十”的规则。

这样可以直接通过七段译码器进行显示。

3.模块的划分计数器在各个挡是被反复应用的,如果在各个挡分别设计计数器,就造成资源的浪费,而且在测量周期和频率时,计数器的时钟信号和输入信号要进行调换,但是计数功能是一样的,所以将计数器设计成单独的模块。

7段译码器在各位,十位,百位中也都被利用了,因此也将其设计成单独的模块,重复引用就不需要在3个显示的时候重复书写译码电路了。

一利用VHDL语言设计频率计1系统功能的分析与电路设置由于多功能数字频率计是一个需对数字信号进行测量和显示的系统,因此需要设置控制电路、计数电路、锁存电路和译码电路等。

测控电路是对计数电路进行工作和时序控制。

锁存电路的主要功能是对计数输出的数据进行锁定保存,即使在前级计数电路的计数器清零以后,锁存器是对单个十进制计数器进行保存,因此锁存器的个数由前一级计数电路的十进制计数器的个数决定。

译码显示电路由译码器和显示器构成。

译码器的功能是,将锁存器保存并输出的四位二进制代码表示的十进制数进行译码转换,将其转换能直接驱动数码管显示与其对应的十进制数字字符的输出信号。

显示器由数码管电路构成。

由于被测信号可能具有多个位数的频率,因此需要多个数码管对其进行显示(本实验需要4个)。

测试原理框图如图所示,预测门信号是一个脉冲,cnt1、cnt2是十进制计数器。

测频模块工作描述及VHDL程序各个模块的描述在方案二里已经介绍,这里只介绍各个模块的VHDL 程序。

1计数模块(CNT10)Library IEEE;Use IEEE.STD_LOGIC_1164.ALL;Entity CNT10 isPort(CLK:IN STD_LOGIC; --计数时钟信号ClR:IN STD_LOGIC; --清零信号ENA:IN STD_LOGIC; --计数使能信号CQ:OUT INTEGER RANGE 0 TO 15; --4位计数结果输出CARRY_OUT:OUT STD_LOGIC); --计数进位End CNT10;ARCHITECTURE A TR OF CNT10 ISSIGNAL CQI:INTEGER RANGE 0 TO 15;BEGINPROCESS(CLK,CLR,ENA)BeginIF CLR='1'THEN CQI<=0; --计数异步清零ELSIF CLK'EVENT AND CLK='1' THENIF ENA='1'THENIF CQI<9 THEN CQI<=CQI+1;ELSE CQI<=0;END IF; --等于9,则计数器清零END IF;END IF;END PROCESS;PROCESS(CQI)BEGINIF CQI=9 THEN CARRY_OUT<='1'; -进位输出ELSE CARRY_OUT<='0';END IF;END PROCESS;CQ<=CQI;END ATR;2锁存模块(REG16B)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG16B ISPORT(REG16B:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(15 DOWNTO 0);DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));END REG16B;ARCHITECTURE art OF REG16B ISBEGINPROCESS(REG16B,din)BEGINIF REG16B'EVENT AND REG16B='1'THEN DOUT<=DIN; --锁存输入数据END IF;END PROCESS;END ART;3控制模块(TESTCTL)Library IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TESTCTL ISPORT(CLK:IN STD_LOGIC; --1HZ测频控制信号TSTEN:OUT STD_LOGIC; --计数器时钟使能CLR:OUT STD_LOGIC; --计数器清零LOAD:OUT STD_LOGIC); --输出锁存信号End TESTCTL;ARCHITECTURE A TR OF TESTCTL ISSIGNAL TESTCTL:STD_LOGIC;BEGINPROCESS(CLK)BEGINIF CLK'EVENT AND CLK='1' THEN --1HZ时钟2分频TESTCTL<=NOT TESTCTL;End IF;END PROCESS;PROCESS(CLK,TESTCTL)BEGINIF CLK='0'AND TESTCTL='0'THEN --产生计数器清零信号CLR<='1';ELSE CLR<='0'; END IF;END PROCESS;LOAD<=NOT TESTCTL; TSTEN<=TESTCTL;END ATR;4译码模块(DISPLAR)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DISPLAY ISPORT(D_IN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);A:OUT STD_LOGIC;B:OUT STD_LOGIC;C:OUT STD_LOGIC;D:OUT STD_LOGIC;E:OUT STD_LOGIC;F:OUT STD_LOGIC;G:OUT STD_LOGIC);END DISPLAY;ARCHITECTURE ARCDISPLAY OF DISPLAY ISBEGINPROCESS(D_IN)TYPE DATA_OUT IS ARRAY(0 TO 6)OF STD_LOGIC;V ARIABLE OUTP:DATA_OUT;BEGINCASE D_IN ISWHEN"0000"=>OUTP:="1111110";WHEN"0001"=>OUTP:="0110000";WHEN"0010"=>OUTP:="1101101";WHEN"0011"=>OUTP:="1111001";WHEN"0100"=>OUTP:="0110011";WHEN"0101"=>OUTP:="1011011";WHEN"0110"=>OUTP:="1011111";WHEN"0111"=>OUTP:="1110000";WHEN"1000"=>OUTP:="1111111";WHEN"1001"=>OUTP:="1111011";WHEN OTHERS=>NULL;END CASE;A<=outp(0);B<=outp(1);C<=outp(2);D<=outp(3);E<=outp(4);F<=outp(5);G<=outp(6);END PROCESS;END ARCDISPLAY;5测频主系统实现(FREQ)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FREQ ISPORT (CLK:IN STD_LOGIC;FSIN:IN STD_LOGIC;result_out:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));END FREQ;ARCHITECTURE atr OF FREQ ISCOMPONENT TESTCTL --待调用的测频控制信号发生器端口定义PORT(CLK:IN STD_LOGIC;TSTEN:OUT STD_LOGIC;CLR:OUT STD_LOGIC;LOAD: OUT STD_LOGIC);END COMPONENT;COMPONENT CNT10 --待调用的有时钟使能的十进制计数端口定义PORT(CLK:IN STD_LOGIC;CLR:IN STD_LOGIC;ENA:IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CARRY_OUT:OUT STD_LOGIC);END COMPONENT;COMPONENT REG16B --待调用的16位锁存器端口定义PORT(REG16B:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(15 DOWNTO 0);DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));END COMPONENT;SIGNAL FRE_EN1:STD_LOGIC;SIGNAL CN_CLR1:STD_LOGIC;SIGNAL LOAD1:STD_LOGIC;SIGNAL DLATCH1:STD_LOGIC_VECTOR(15 DOWNTO 0);SIGNAL CNTOUT1:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINU1:TESTCTL PORT MAP(CLK=>CLK,TSTEN=>FRE_EN1,CLR=>CN_CLR1,LOAD=>LOAD1);U2:REG16B PORT MAP(REG16B=>LOAD1,DIN=>DLATCH1,DOUT=>RESULT_OUT);--名字关联U3:CNT10 PORT MAP(CLK=>FSIN,CLR=>CN_CLR1,ENA=>FRE_EN1,CQ=>DLATCH1(3 DOWNTO 0),CARRY_OUT=>CNTOUT1(0)); --位置关联U4:CNT10 PORT MAP(CLK=>CNTOUT1(0),CLR=>CN_CLR1,ENA=>FRE_EN1,CQ=>DLATCH1(7 DOWNTO 4),CARRY_OUT=>CNTOUT1(1));U5:CNT10 PORT MAP(CLK=>CNTOUT1(1),CLR=>CN_CLR1,ENA=>FRE_EN1,CQ=>DLATCH1(11 DOWNTO 8),CARRY_OUT=>CNTOUT1(2));U6:CNT10 PORT MAP(CLK=>CNTOUT1(2),CLR=>CN_CLR1,ENA=>FRE_EN1,CQ=>DLATCH1(15 DOWNTO 12),CARRY_OUT=>CNTOUT1(3));End atr;原理图的制作利用EDA工具进行原理图输入设计的优点是,设计者不必具备许多诸如编程技术、硬件语言等新知识就能迅速入门,完成较大规模的电路系统设计。

相关文档
最新文档