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译码器进行连接,使其达到实验的要求。

EDA作业2-LED彩灯

EDA作业2-LED彩灯

EDA作业二--LED彩灯一、实验任务让8个LED实现彩灯的功能,并进行波形仿真。

通过这个实验,进一步掌握采用计数与判断的方式来实现分频的VHDL的编程方法以及移位运算符的使用。

二、实验环境软件实验环境为Quartus II 8.1开发软件。

三、实验原理彩灯,就是让LED以一定的规律显示不同的亮灭的组合。

本彩灯的设计采用了4种的亮灭方式。

每来一个时钟脉冲CLK,计数器就加1。

每当判断计数器中的数值达到25000000时,就会按一定方式点亮8个led。

FPGA输出数据就应该首先是10000000,隔1秒钟变成11000000……一直变化到111111,这样,依次点亮所有的灯,就形成了流水灯。

而当8个灯都点亮时,要一个操作使得所有的灯恢复为初始状态,即:灯都不亮。

然后,再一次流水即可。

如果是右移位,就出现向右流水的现象;反之,向左流水。

同流水灯原理:00方式为流水灯依次亮灭方式,01方式为两边向中间点亮方式。

10方式为连续两个灯同时按照流水灯亮灭,11方式为中间向两边点亮方式。

本实验程序定义了彩灯的端口部分,结构部分(控制部分),进程部分。

(分频部分本实验未使用到,所以在注释部分给出)四、实验步骤1、建立新工程项目:打开Quartus II软件,进入集成开发环境,点击File→New project wizard 建立一个工程项目caideng。

2、建立文本编辑文件:点击File→New在该项目下新建VHDL源程序文件caideng.v,输入试验程序中的源程序代码保存后选择工具栏中的按钮启动编译,若在编译中发现错误,则找出并更正错误,直到编译成功为止。

3、编译工程项目:在Quartus II主页面下,选择Processing—Start Compilation或点击工具栏上的按钮启动编译,直到出现“Full Compilation Report”对话框,点击OK 即可。

4、波形仿真:建立波形文件caideng.vwf 选择相应节点,进行功能仿真,仿真图如下。

eda技术作业参考答案.doc

eda技术作业参考答案.doc

5-14library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity div is port(clk,RESET: in std_logic;outl,out2:out std_logic);end div;architecture div_16 of div issignal ent: std_logic_vector(3 downto 0);beginprocess(clk)beginif reset=T thencnt<=u OOOO n;elsif (clk'event and clk=T) then cnt<=cnt+T;end if;end process;outl<=T when cnt=15 else 'O';--不等out2<=cnt(3); -正负脉宽相等end div_16;5-11library ieee;use ieee.std_logic_l 164.all;entity s_machine is port(clk:in std_logic;din:in std_logic_vector( 1 downto 0); dout:out std_logic_vector( 1 downto 0));end s_machine;architecture a of s_machine istype state is (s0,sl,s2);signal current_state,next_state:state;beginprocess(din,curret_state) -次态译码器与输出译码器描述begincase current_state iswhen sO =>讦(din = "00") then next_state <= sO; doutv="00'';elsif (din = "01") then next_state <= s2; dout<=,,10,?;elsif (din = TO") then next_state <= s2; dout<=,,lF,;end if;when si =>if (din = “00") then next_state <= si; doutv="00''; elsif(din = "01") then next_state <= sO; doutv=''00"; elsif(din = TO") then next_state <= s2; dout<=,,10,?; end if;when s2 =>讦(din = "00") then next_state <= s2; doutv="00''; elsif(din = "01") then next_state <= si; doutv="00''; elsif(din = TO") then next_state <= sO; doutv=''00"; end if;end case;End process;process(clk) -状态寄存器描述beginif (clk?event and clk== '1') then current_state<=next_state;end if;End process;End a;5-10(1)entity h_sub isport (x, y: in BIT ;diff, sub_out: out bit);end h_sub; Architecture A of h_sub isbegindiff <= x xor y; sub_out <= not X and Y;end A;ENTITY F_SUB ISPORT(X, Y, SUB_IN: IN BIT;DIFF, SUB_OUT: OUT BIT);ENDF_SUB;ARCHITECTURE ART OF F_SUB ISCOMPONENT H_SUBPORT(X, Y: IN BIT;DIFF, SUB_OUT: OUT BIT);END COMPONENT;SIGNAL SI, S2, S3: BIT;BEGINUl: H_SUB PORT MAP (X=>X, Y=>Y, DIFF=>S1, SUB_OUT=>S2);U2 : H_SUB PORT MAP (X=>S1 , Y=>SUB_IN ,DIFF=>DIFF, SUB_OUT=>S3);SUB_OUT<=S2 OR S3;END ARCHITECTURE ART;⑵.entity f^sub isport ( x, y, sub_in: in bit;diff, sub_out: out bit);end f_sub;architecture func of 匚sub isbeginprocess(x, y, sub_in)variable con: bit_vector(l downto 0);variable com: bit_vector(2 downto 0);begincom:= x & y & sub_in;if (com = “000") then con := “00";elsif (com = "Oil") then con := "01";elsif (com 二"100") then con :二"10";elsif (com 二"101") then con := "00";elsif (com = T10") then con := “00";else con := T1";end if;diff <= con(l); sub_out <= con(0);end process;end func;⑶entity subtracter isport ( a, b : in bit_vector(7 dowto 0);sub_in : in bit;diff: out bit_vector(7 dowto 0); sub_out: out bit); end subtracter;architecture stru of subtracter iscomponent H_subport ( x, y, sub_in: in bit; diff, sub_out: out bit);end component; signal sub: bit_vector(8 downto 0); begingO: for I in 0 to 7 generateu_inst: H_subbport map(a(i), b(i),sub(i),diff(i), sub(i+l));end generate;sub(0) <= sub_in;sub_out <=sub(8);end stru;5-8library IEEE:use IEEE. Std _logic_ 1164.all:use IEEE. STD_LOGIC _UNSIGNED.all:entity seq_gen isport(CIK, RESET: in STD_LOGIC:Y0: out STD_LOGIC_vector(9 downto 0)):End seq_gen;Architecture rtl of seq_gen isSignal CNT: STD_LOGIC_VECTOR(3 downto 0);beginprocess(CLK, RESET)begin〜 ifRESET=,l,thenCNT v=''0000";Elsif CLK'event and CLK=T thenIfcnt="1001''thenCNTv=”000";elseCNT<=CNT +T;End if;End if;End process ;With CNT SelectY0<=,,000000000F, when ” 0000”,“0000000010” when " 0001”,“0000000100” when ” 0010”,“0000001000” when ” 0011”,“0000010000” when ” 0100”,^^0000100000^^ when ” 0101”,“0001000000” when ” 0110”,“0010000000” when ” 0111”,4<010*******,? when ” 1000”,T 000000000’' when others ;end rtl;5-7library IEEE;use IEEE.Std _logic_ 1164.all;use IEEE.std_logic_unsigned.al 1; entity counter isport(clk,rst,ml,m0:in std_logic;y:out std_logic_vector (4 downto 0));End counter;Architecture rtl of counter isSignal sei: std_logic_vector (1 downto 0);Signal per,ent: std_logic_vector (4 downto 0);beginsel<=ml&mO;With sei Selectperv=”1001(F when “0(F,"OOOll" when “01",,,0100r, when TO","00101" when others;process(reset,clk)beginif reset=T thencnt<=n00000n;elsif (clk'event and clk=r)thenif ent = pre thencnt<=H00000u;elsecnt<=cnt+T;end if;end if;end process;y<=cnt;end rtl;2-1判断下列标示符是否合法,如果有误指出原因:16#OFA#, 10#12F#, 8#7989#, 8#356#, 2#0101010#, 74HC245,\74HC574\, CLR/RESET, \IN, 4/SCLKX, DI00% 16#OFA#10#12F# 8#7989# 8#356# 2#0101010# 以上不合法,不能以数字开头和存在#符号。

EDA大作业-出租车计费系统的设计

EDA大作业-出租车计费系统的设计

1。

所选题目:出租车计费器2.设计要求:设计一个出租车计费器,能按路程计费,具体要求如下:(1)实现计费功能,计费标准为:按行驶里程计费,起步价为6。

00元,并在汽车行驶2km后按1.2元/km计费,当里程数达到15km后,没千米加收50%的空驶费,车辆停止和暂停时不计费。

(2)现场模拟汽车的启动、停止、暂停和换挡等状态。

(3)设计数码管显示电路,将车费和路程显示出来,各有1位小数。

3。

设计原理:设计该出租车有启动键、停止键、暂停键和档位键。

启动键为脉冲触发信号,当其为一个脉冲时,表示汽车已启动,并根据车速的选择和基本车速发出相应频率的脉冲(计费脉冲)以此来实现车费和路程的计数,同时车费显示起步价;当停止键为高电平时,表示汽车熄火,同时停止发出脉冲,此时车费和路程计数清零;当暂停键为高电平时,表示汽车暂停并停止发出脉冲,此时车费和路程计数暂停;档位键用于改变车速,不同的档位对应着不同的车速,同时路程计数的速度也不同。

4.模块设计:出租车计费器可分为两大模块,即控制模块和译码显示模块.系统框图如下:5。

电路符号:出租车计费器的输入信号有:计费时钟脉冲clk;汽车启动键start;汽车停止键stop;档位speedup.输出信号:7段显示控制信号seg7;小数点dp。

6.具体设计流程:(1)根据出租车计费原理,将出租车计费部分由5个计数器来完成分别为counterA,counterB,counterC,counterD,counterE。

①计数器A完成车费百位。

②计数器B完成车费十位和个位.③计数器C完成车费角和分(显示时只显示角)。

④计数器D完成计数到20(完成车费的起步价)。

⑤计数器E完成模拟实现车行驶100 m的功能。

(2)当超出起步价时就自动在起步价的基础上每增加一个100m脉冲就增加相应的费用,而当总里程达到或超过一定的数值时,能按新的收费标准进行收费。

(3)译码/动态扫描电路模块将路程与费用的数值译码后用动态扫描的方式驱动6只数码管,即所连接的数码管共用一个数据端,由片选信号依次选择输出,轮流显示.(4)数码管显示将千米数和计费金额均用3位LED数码管显示(2位整数,1位小数)。

《EDA技术实用教程》习题解答

《EDA技术实用教程》习题解答
y => b(i), sub_in => stmp(i), diffr => c(i), sub_out => stmp(i+1)); end generate ; end;
习题 5-6 根据图 5-23,写出顶层文件 MX3256.VHD 的 VHDL 设计文件。
第 1 章 概述
9
图 5-21 习题 5-4 图
解: VHDL 设计文件内容如下:
library ieee; use ieee.std_logic_1164.all;
entity exen is
port ( cl
: in std_logic;
clk0 : in std_logic;
out1 );
: out std_logic
out1 <= not tmp; end hdlarch; ⊕习题 5-5 给出 1 位全减器的 VHDL 描述。要求: (1) 首先设计 1 位半减器,然后用例化语句将它们连接起来,图 5-22 中 h_suber 是半减器,diffr 是输出差, s_out 是借位输出,sub_in 是借位输入。
解:
图 5-19 4 选 1 多路选择器
图 5-20 双 2 选 1 多路选择器
architecture hdlarch of MUXK is
signal tmp : std_logic;
begin
process(s0,a2,a3) begin
if s0 = '0' then
tmp <= a2;
else
解:用同步计数器来实现。(事实上要求设计的是一个袼雷码计数器)
考虑不同状态时,对应的 DFF 输入端的值:

EDA作业

EDA作业

EDA作业1.三人表决电路设计输入用拨码开关sw1-sw8输出用LED显示。

LED引脚定义(8bit LEDs)set_location_assignment PIN_AB20 -to led_down[0]set_location_assignment PIN_AD24 -to led_down[1]set_location_assignment PIN_AB23 -to led_down[2]set_location_assignment PIN_AB18 -to led_down[3]set_location_assignment PIN_Y21 –to led_down[4]set_location_assignment PIN_AD16 -to led_down[5]set_location_assignment PIN_U24 –to led_down[6]set_location_assignment PIN_T23 –to led_down[7]8位拨码开关定义(8bit Switch)set_location_assignment PIN_AA16 -to sw[0]set_location_assignment PIN_Y13 -to sw[1]set_location_assignment PIN_W10 -to sw[2]set_location_assignment PIN_V10 -to sw[3]set_location_assignment PIN_Y11 -to sw[4]set_location_assignment PIN_V13 -to sw[5]set_location_assignment PIN_V24 -to sw[6]set_location_assignment PIN_AB15 -to sw[7]实验5:分频器设计一:设计一个分频器,首先对系统时钟分频,形成2Hz的信号,然后依次点亮8个LED,形成流水灯。

EDA作业

EDA作业

数字电路与逻辑设计(EDA)作业1.画出下例实体描述对应的原理图符号元件:ENTITY buf3s IS -- 实体1:三态缓冲器PORT (input : IN STD_LOGIC ; -- 输入端enable : IN STD_LOGIC ; -- 使能端output : OUT STD_LOGIC ) ; -- 输出端END buf3x ;ENTITY mux21 IS --实体2: 2选1多路选择器 PORT (in0, in1, sel : IN STD_LOGIC;output : OUT STD_LOGIC);END ENTITY mux22.图中所示的是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。

Library ieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitymux4_1isport(s:instd_logic_vector(1 downto 0);a,b,c,d:instd_logic;y:out std_logic);endmux4_1;architecture arc of mux4_1issignal s1,s0:std_logic;begins1<=s(1);s0<=s(0);process(s1,s0)beginif(s1='0' and s0='0') then y<=a;elsif(s1='0' and s0='1') then y<=b;elsif(s1='1' and s0='0') then y<=c;elsif(s1='1' and s0='1') then y<=d;else null;end if;end process;end arc;libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitymux4_1isport(s:instd_logic_vector(1 downto 0);a,b,c,d:instd_logic;y:out std_logic);endmux4_1;architecture arc of mux4_1isbeginprocess(s)begincase s iswhen "00" => y<=a;when "01" => y<=b;when "10" => y<=c;when "11" => y<=d;when others => null;end case;end process;end arc;3.图中所示的是双2选1多路选择器构成的电路MUXK,对于其中MUX21A,当s='0'和'1'时,分别有y<='a'和y<='b'。

数电EDA大作业一报告

数电EDA大作业一报告
输入:符号位K,数位I2I1I0输出:符号位Yk,数位Y2Y1Y0
将3个CP1串行级联,并将第一个的进位输入端接符号位。
实现功能:求补码
5.简易3-1选择器(3_1selector):
输入:选择端S2S1S0,数位I2I1I0输出:Y
约束条件:
实现功能:选通一个输入端。
6.简易2-4译码器(2_4decoder):
实现功能:通过拨码开关或者接入两列方波序列让加数和结果分别显示在数码管上。
二、设计思路
1.注意到两个带符号位的四位二进制数时,需要先把二进制数的补数相加再取补数,所以做三个补码器和一个全加器组合,进而完成运算器。
2.对于带符号位的三位二进制数,可以扩展成四位,即把M, N扩展成A3A2A1A0形式,其中,A3为符号位,A2补0,A1A0与原M、N的最后两位相同。
2.全加器和运算器的设计基本没有遇到设计上的问题,因为电子技术实验三组合电路有设计过类似电路。
3.设计分频器时,遇到的问题是在quartus ii中不能直接添加时钟,最后查看FPGA使用说明才知道用晶振产生时钟信号。
4.分频器接入电路后出现错位重影的问题,分析是竞争冒险的问题,所以继续分频,直到能准确显示为止(31.25Hz)。
8.同步十进制加法器(SDAC):
实现功能:产生占空比为1/10的方波。
9.降200k分频器(FD200k):
用5个SDAC串联,最后接上一个T触发器,并使T为1或T与CLK相接。
实现功能:将频率降低200k,如将50MHz降为250Hz。
10.扫描显示电路(show):
用2-4译码器、3-1选择器、运算器、7447译码器等组合成扫描显示电路。
A模块:
分别输出31.25Hz和5Hz的时钟信号。

微波电路eda作业(1)

微波电路eda作业(1)

丁启程 No.20120291700091、编写微带线分析和综合程序,并计算:1)基片厚度0.127mm,相对介电常数2.2的50欧姆微带线的宽度;2)基片相对介电常数6.15的微带线,W/h在0.5-10.0之间变化时,特性阻抗Z0的曲线。

要求:1)程序流程图;2)程序代码及注释;3)运行结果解:微带线综合函数:流程图如图输入Z0,h,s判断Z0<44-s是,窄微带线否,宽微带线输出结果程序代码:function w=zonghe(z0,h,s)%z0 表示微带线的特性阻抗;h为基片厚度,相对介电常数sif z0<44-sd=59.95*pi^2/(z0*sqrt(s));r=2/pi*((d-1)-log(2*d-1))+(s-1)/(pi*s)*(log(d-1)+.293-0.517/s); Else%宽微带情况,w为微带宽度h1=z0*sqrt(2*(s+1))/119.9+.5*(s-1)/(s+1)*(log(pi/2)+log(4/pi)/s);%窄微带情况r=(exp(h1)/8-1/(s*exp(h1)))^(-1);endw=r*h;运行结果:输入:w=zonghe(50,.127,2.2)输出:w=0.4954微带线分析函数:流程图如下:输入r,s计算介质的特性阻抗计算有效介电常数计算微带线特性阻抗输出结果程序代码:function Z=analyze(r,s)% r=w/h;%宽高比%计算无色散微带均匀媒质微带线阻抗f=6+(2*pi-6)*exp(-(30.666./r).^0.7528);z01=376.73/(2*pi)*log(f./r+sqrt(1+(2./r).^2));%计算有效介电常数ea=1+1/49*log((r.^4+(r/52).^2)./(r.^4+.432))+log(1+(r/18.1).^3)/18.7; b=.564*((s-0.9)/(s+3))^053;s1=(s+1)/2+(s-1)/2*(1+10./r).^(a*b);%计算微带的特性阻抗z0=z01./sqrt(s1);Z=z0;调用程序:clc;clear all;closer=0.5:0.05:10;s=6.15;y=analyze(r,s);plot(r,y)xlabel('w/h')ylabel('Z0')运行结果:2、设一晶体管的S11和S22的测试值分别为:试用单向化等效电路模型分别求出其输入和输出等效电路(要求在6GHz处精确匹配,测试系统的特性阻抗为50Ω)。

eda作业题答案

eda作业题答案

2011-2012作业题答案:1-5 IP 在EDA技术的应用和发展中的意义是什么?答:IP是知识产权或知识产权模块的意思,在EDA技术开发中具有十分重要的地位。

它是用于ASIC或FPGA中预先设计好的功能模块。

当前IP核是为了易于重用而按嵌入式应用专门设计的。

IP核按照“四最”目标进行优化的:芯片面积最小,运算速度最快、功耗消耗最低,工艺容差最大“。

同时IP要符合标准。

由于IP是成熟、优化、标准的单元,使用它们可以提高效率减少风险。

1-6 叙述EDA的FPGA/CPLD设计流程,以及涉及的EDA工具及其在整个流程中的作用。

答:EDA的FPGA/CLPD设计流程:图形输入/HDL文本输入、综合、适配,时序仿真与功能仿真,编程下载、硬件测试。

EDA工具:QUARTUS当Entity muxk1 Isport(a1,a2,a3,s0,s1: In std_logic;outy: Out std_logic); End muxk1;Architecture abmux Of muxk1 IsSignal tmp: std_logic;Beginp1: process (a2,a3,s0)BeginCase s0 isWhen …0‟ => tmp <= a2;When …1‟ => tmp <= a3;When others => Null;End Case;End process;p2: Process (a1,tmp,s1)BeginCase s1 isWhen …0‟ => outy <= a1;When …1‟ => outy <= tmp;When others => Null;End Case;End Process;End abmux;Library ieee;Use ieee.std_logic_1164.all;Entity muxk isPort(a1,a2,a3,s0,s1: In Std_logic;outy: Out Std_logic); End muxk;Architecture abmux Of muxk isSignal tmp: Std_logic;Beginp1: Process (a2,a3,s0)BeginIf s0='1' Thentmp <= a2;Elsetmp <= a3;End If;End Process;p2: Process (a1,tmp,s1)BeginIf s1='1' Thenouty <= a1;Elseouty<= tmp;End if;End Process;End abmux;3-12 分别给出图3-20所示的6个RTL图的VHDL 描述,注意其中的D 触发器和锁存器的表述。

EDA最终实验课大作业-血型配对器的设计实验报告

EDA最终实验课大作业-血型配对器的设计实验报告

实验报告 血型配对器的设计一、实验目的1、进一步熟悉Quartus II 软件的使用。

2、掌握简单组合逻辑电路的设计方法与功能仿真技巧。

3、进一步学习Quartus II 中基于原理图设计的流程。

二、实验原理及内容实验原理人类有O 、A 、B 、AB 4种基本血型,输血者与受血者的血型必须符合图示原则。

设计一血型配对电路,用以检测输血者与受血者之间的血型关系是否符合,如果符合,输出为1,否则为0。

已知: AB 血型是万能受血者,O 血型是万能献血者!如果要输血给O 型血,那么可以的血型是O 型!如果要输血给A 型血,那么可以的血型是A ,O 型!如果要输血给B 型血,那么可以的血型是B ,O 型!如果要输血给AB 型血,那么可以的血型是A ,B ,AB ,O 型!三.实验内容1、用VHDL 语言编写程序实现血型配对器的功能LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY Vxuexing ISPORT(P,Q,R,S:IN STD_LOGIC;F:OUT STD_LOGICOO A ABB AB AB 受血者输血者);END Vxuexing;ARCHITECTURE A OF Vxuexing ISBEGINF<=((NOT P)AND(NOT Q))OR(R AND S)OR ((NOT P)AND S)OR((NOT Q)AND R); END A;卡诺图化简得:+F++=PSQQRPRS2、对所编写的电路进行编译及正确的仿真。

实验分析真值表SRQPQPSPF+++=+++++QRRQPSPPQRSRSQQRSRQPPRSSSPRQP,Q表示输血者的血型;R,S,表示受血者的血型。

当两者符合血型配合原则时,F=1,否则为0.四、运行结果五、实验总结本实验给出了四种不同的血型编码,PQ(1,1),RS(1,1)表示AB型血,P,Q(1,0),RS(1,0)表示B型血,PQ(0,1),RS(0,1)表示A型血,PQ(0,0),RS(0,0)表示O型血。

EDA大作业_Quartus II_简易计算器_实验报告

EDA大作业_Quartus II_简易计算器_实验报告

实验报告——简易计算器目录:一、实验目的 (1)二、实验任务 (1)三、电路设计及仿真 (2)1. 结构设计图示如下: (2)2. 设计描述 (2)3. 一位全加器: (2)4. 四位全加器: (2)5. 补码器 (3)6. 四位加减器 (4)7. 八位全加器 (5)8. 乘法器 (5)9. 整体电路: (6)四、实验总结 (7)1. 实验收获: (8)2. 实验中出现的问题及解决: (8)一、实验目的1. 学习面向可编程器件(FPGA)的简单数字系统的设计流程。

2. 熟练掌握EDA设计软件Quartus II的原理图输入方式和层次化设计模式。

3. 熟悉实验装置——实验箱。

二、实验任务1. 设计1位全加器,并将其封装成1位全加器模块,仿真验证运算结果;2. 设计4位加/减运算器。

用封装好的1位全加器模块组成成4位加/减运算器。

仿真验证运算结果;3. 以全加器为基础设计一个4位乘法器并封装成乘法器模块,输出显示乘积和正负数标志。

仿真验证运算结果;4. 使用已生成的器件模块为基础设计一个简易计算器,根据控制端的状态,完成加、减、乘法运算,用十进制显示运算结果;用发光二极管显示负数标志。

仿真验证运算结果;即实现如下设计:三、电路设计及仿真1.结构设计图示如下:2.设计描述①利用门电路组合成1位全加器,封装;②调用1位全加器组合4位全加器和4位补码全加器(实现补码和相加),分别封装;③利用门电路实现补码器,封装;(可改进——使用4位全加器实现,见下);④调用4位补码全加器和补码器实现4位加减器;⑤调用4位全加器实现8位全加器,封装;⑥调用8位全加器实现乘法器;⑦译码(二进制码——BCD码);⑧组合4位加减器和乘法器成简易计算器;3.一位全加器:①利用门电路组合而成4位全加器;电路图如下:②将其封装成1位全加器模块。

4.四位全加器:①利用1位全加器模块搭建4位补码全加器(实现补码后相加),电路如下:② 将其封装成4位补码全加器模块。

相关主题
  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工具进行原理图输入设计的优点是,设计者不必具备许多诸如编程技术、硬件语言等新知识就能迅速入门,完成较大规模的电路系统设计。

相关文档
最新文档