实验15 VHDL多路复用器与比较器的设计与仿真

合集下载

VHDL多路波形发生器实验报告

VHDL多路波形发生器实验报告

VHDL多路波形发生器实验报告一、基本要求:1、对输入时钟信号进行分频,实现三路互差120°的信号。

2、实现输出信号的占空比控制clk: 输入时钟信号reset: 同步复位信号(低电平有效)div: 输入分频控制信号(注意:6n分频)ctrl: 占空比控制信号ctrl=1时, 占空比为1:1ctrl=2时, 占空比为1:2ctrl=3时, 占空比为2:1A,B,C: 三路输出信号二、设计思路:1.实验为6n分频,用变量s来控制,0~6n-1这六个数,当时钟信号每来一个上升沿时加1,当为6n-1时清零;2.定义N为常量,通过改变N的值改变分频;3.ctrl值不同时,占空比不同,用case语句控制,ctrl分别为01,10,11和其他;4.具体波形的实现用if语句,当占空比为1时,A输出信号在s=0和s=3*n时翻转,B输出信号在s=2*n和s=5*n时翻转,C输出信号在s=4*n和s=n的时候翻转。

当占空比为1:2时,A输出信号在s=0和s=2*n时翻转,B输出信号在s=2*n和s=4*n时翻转,C输出信号在s=4*n和s=0的时候翻转。

当占空比为2:1时,A输出信号在s=0和s=4*n时翻转,B输出信号在s=2*n和s=0时翻转,C输出信号在s=4*n和s=2*n的时候翻转;5.在占空比为1和1:2时,C输出信号应比B慢120度,但是实际输出超前B,所以要对C输出进行反相;同理,在占空比为2:1时,要对B、C分别进行反向。

6.用if语句判断是否复位,若非,则执行case语句。

三、流程图:四、源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity top isport(clk,reset:in std_logic;ctrl:in std_logic_vector(1 downto 0);A,B,C:out std_logic);end top ;architecture rel of top issignal temp1,temp2,temp3,temp4,temp5 : std_logic; constant N: integer:=1;signal s:integer range 0 to 6*N-1 ;beginprocess(clk,reset,ctrl)beginif (reset='0') thentemp1<='0';temp2<='0';temp3<='0';temp4<='0';temp5<='0';s<=0;elsecase ctrl iswhen "01"=>if (clk 'event and clk='1') thenif s=6*N-1 thens<=0;elses <= s+1;end if;if s=0 thentemp1<= not temp1;end if;if s=3*N thentemp1<= not temp1;end if;if s=2*N thentemp2<= not temp2;end if;if s=5*N thentemp2<= not temp2;end if;if s=4*N thentemp4<= not temp4;end if;if s=N thentemp4<= not temp4;end if;end if;temp3<= not temp4;when "10"=>if (clk 'event and clk='1') thenif s=6*N-1 thens<=0;elses <= s+1;end if;if s=0 thentemp1<= not temp1;end if;if s=2*N thentemp1<= not temp1;end if;if s=2*N thentemp2<= not temp2;end if;if s=4*N thentemp2<= not temp2;end if;if s=4*N thentemp4<= not temp4;end if;if s=0 thentemp4<= not temp4;end if;end if;temp3<= not temp4;when "11"=>if (clk 'event and clk='1') thenif s=6*N-1 thens<=0;elses <= s+1;end if;if s=0 thentemp1<= not temp1;end if;if s=4*N thentemp1<= not temp1;end if;if s=2*N thentemp5<= not temp5;end if;if s=0 thentemp5<= not temp5;end if;if s=4*N thentemp4<= not temp4;end if;if s=2*N thentemp4<= not temp4;end if;end if;temp2<= not temp5;temp3<= not temp4;when others=>temp1<='0';temp2<='0';temp3<='0';end case;end if;end process;A<=temp1;B<=temp2;C<=temp3;end rel;五、仿真波形:整体波形:当ctrl=1 当ctrl=2 当ctrl=3复位当ctrl=其他:六、实验过程遇到的问题:在程序设计时,开始不知该怎样使A,B,C互差120度,开始是想通过定义一个变量,每来一个上升沿加1,从0开始,A路信号除3n 取余为0则翻转,B路信号除3n取余为1则翻转,C路信号除3n取余为2则翻转,我觉得这样的想法应该没有错,可是实际却调不出来,可能是某处逻辑有问题,后来就模仿老师给的6分频程序,设计了现在的程序。

VHDL与数字电路设计实验报告

VHDL与数字电路设计实验报告

VHDL与数字电路设计实验报告引言本实验旨在通过使用VHDL编程语言和数字电路设计技术,实现特定功能的电路设计。

本文档将对实验的步骤、设计原理和结果进行详细描述。

实验步骤1. 步骤一:熟悉VHDL编程语言在实验开始之前,团队成员对VHDL编程语言进行了研究和熟悉。

我们了解了VHDL的基本语法、数据类型和结构,并获得了对VHDL设计原理的初步理解。

2. 步骤二:设计功能电路在本实验中,我们选择了一个特定的功能电路进行设计。

我们首先进行了功能需求分析,并根据需求确定了电路的输入输出信号以及主要的逻辑运算。

然后,我们使用VHDL编程语言将电路的逻辑运算实现为代码,并进行了仿真和测试。

3. 步骤三:电路仿真和验证为了验证我们设计的电路功能的正确性,我们使用了VHDL仿真工具进行了电路的仿真和验证。

我们根据输入信号的不同组合,观察输出信号的变化,并与我们预期的结果进行比较。

通过这一步骤,我们确认了我们设计的电路能够按照预期工作。

4. 步骤四:电路实现和测试在确认电路的设计和仿真结果无误之后,我们进一步将电路实现到实际的数字电路平台上,并进行了硬件测试。

我们使用实际的输入信号来测试电路的性能和稳定性,并对输出信号进行观察和分析。

通过这一步骤,我们验证了电路在实际环境中的可行性。

设计原理我们设计的电路基于特定的功能需求,采用了经典的数字电路设计原理。

通过使用VHDL编程语言,我们将电路的逻辑运算实现为逻辑门和触发器的组合。

通过将输入信号连接到适当的逻辑门和触发器,我们实现了所需的功能。

结果与分析经过实验步骤的完成,我们成功地设计和实现了一个具有特定功能的数字电路。

在仿真测试和实际测试中,电路都表现出了良好的性能和稳定性。

根据结果的分析,我们验证了电路的设计原理和逻辑的正确性。

结论本实验通过使用VHDL编程语言和数字电路设计技术,成功地实现了一个具有特定功能的电路设计。

我们的实验结果表明,VHDL和数字电路设计技术在电路设计领域具有重要的应用价值。

实验五--4选1多路复用器和4位比较器设计与仿真

实验五--4选1多路复用器和4位比较器设计与仿真

实验五 4选1多路复用器和4位比较器设计与仿真班级信息安全一班姓名邓一蕾学号2指导老师袁文澹一、实验目的1.熟悉QuartusⅡ仿真软件的基本操作,并用VHDL语言和逻辑图设计四选一多路选择器,4位比较器。

二、实验内容1.参照芯片74LS153的电路结构,用逻辑图和VHDL语言设计四选一多路复用器;2.从QuartusⅡ中取7485器件(比较器)进行仿真与分析;用VHDL语言设计4位比较器,接着进行仿真与分析,电路逻辑结构参照芯片74x85三.实验原理1.(1)四选一多路选择器逻辑电路的原理4选1多路选择器,GN为使能端,AB为选择通道控制端,c0,c1,c2,c3为数据输入端.Y为输出端。

当GN为1时,y=0;当GN为0,AB=00时,Y为c0的值;当GN为0,AB=01时,Y为c1的值;当GN为0,AB=10时,Y为c2的值;当GN为0,AB=11时,Y为c3的值;(2)通过实验实现逻辑的原理2.(1)4位比较器的逻辑电路图A0,B0,A1,B1,A2,B2,A3,B3为相比较数输入端,ALBI,AEBI,AGBI为级联输入端ALBO,AEBO,AGBO为比较输出端。

2)通过实验实现逻辑的逻辑功能表为四、实验方法与步骤实验方法:采用基于FPGA进行数字逻辑电路设计的方法。

采用的软件工具是QuartusII软件仿真平台,采用的硬件平台是Altera EPF10K20TI144_4的FPGA试验箱。

1.4选1多路选择器实验步骤:编写源代码。

打开QuartusⅡ软件平台,点击File中得New建立一个文件。

编写的文件名与实体名一致,点击 as以“.vhd”为扩展名存盘文件。

2、按照实验箱上FPGA的芯片名更改编程芯片的设置。

操作是点击Assign/Device,选取芯片的类型。

建议选“Altera的EPF10K20TI144_4”3、编译与调试。

确定源代码文件为当前工程文件,点击Complier进行文件编译。

实验四 多路复用器与比较器的设计与仿真

实验四 多路复用器与比较器的设计与仿真

实验四多路复用器与比较器的设计与仿真一、实验目的:实现多路复用器与比较器的设计与仿真。

二、实验内容1.用逻辑图设计四选一多路复用器,再用VHDL语言设计参数化的多路复用器;2.用逻辑图设计7485比较器,再用VHDL语言设计4位比较器。

8-3优先编码器。

三、实验步骤。

(一)、多路复用器、7485比较器的逻辑图及逻辑表达式。

1.多路复用器:逻辑框图:逻辑图:2.7485比较器:逻辑框图:逻辑图:(二)用VHDL语言设计多路复用器、7485比较器。

1.多路复用器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY duolu ISPORT(a: IN STD_LOGIC_VECTOR(1 DOWNTO 0);c0,c1,c2,c3: IN STD_LOGIC;y : OUT STD_LOGIC);END duolu;ARCHITECTURE arch OF duolu ISBEGINwith A select y<=c0 WHEN "00" ,c1 WHEN "01" ,c2 WHEN "10" ,c3 WHEN "11" ,'0' WHEN OTHERS ;END arch;2.7485比较器:library ieee;use ieee.std_logic_1164.all;entity bijiaoqi isport(agbl,albl,aebl:in std_logic;a0,a1,a2,a3:in std_logic;b0,b1,b2,b3:in std_logic;albo,aebo,agbo:out std_logic);end bijiaoqi;architecture bhv of bijiaoqi isbeginprocess(albl,aebl,agbl,a0,a1,a2,a3,b0,b1,b2,b3)beginif(a3>b3)thenagbo<='1';albo<='0';aebo<='0';else if(a3<b3) thenagbo<='0';albo<='1';aebo<='0';else if(a3=b3 and a2>b2 )thenagbo<='1';albo<='0';aebo<='0';else if(a3=b3 and a2<b2 )thenagbo<='0';albo<='1';aebo<='0';else if(a3=b3 and a2=b2 and a1>b1)thenagbo<='1';albo<='0';aebo<='0';else if(a3=b3 and a2=b2 and a1<b1)thenagbo<='0';albo<='1';aebo<='0';else if(a3=b3 and a2=b2 and a1=b1 and a0>b0)thenagbo<='1';albo<='0';aebo<='0';else if(a3=b3 and a2=b2 and a1=b1 and a0<b0)thenagbo<='0';albo<='1';aebo<='0';else if(a3=b3 and a2=b2 and a1=b1 and a0=b0 and aebl='1')then agbo<='0';albo<='0';aebo<='1';else if(a3=b3 and a2=b2 and a1=b1 and a0=b0 and agbl='1' and albl='0'and aebl='0')thenagbo<='1';albo<='0';aebo<='0';else if(a3=b3 and a2=b2 and a1=b1 and a0=b0 and agbl='0' and albl='1'and aebl='0')thenagbo<='0';albo<='1';aebo<='0';else if(a3=b3 and a2=b2 and a1=b1 and a0=b0 and agbl='1' and albl='1'and aebl='0')thenagbo<='0';albo<='0';aebo<='0';else if(a3=b3 and a2=b2 and a1=b1 and a0=b0 and agbl='0' and albl='0'and aebl='0')thenagbo<='1';albo<='1';aebo<='0';end if;end if;end if;end if;end if;end if;end if;end if;end if;end if;end if;end if;end if;end process;end bhv;四、实验仿真结果。

比较器的设计与实现实验报告

比较器的设计与实现实验报告

比较器的设计与实现实验报告一、实验目的1.学习常用组合逻辑的可综合代码的编写;2.学习VHDL语言的编程思想与调试方法;3.学习通过定制LPM原件实现逻辑设计,通过波形仿真及硬件试验箱验证设计的正确与否。

4.设计一个能实现两个二位数大小的比较电路并实现利用LPM原件实现。

二、实验原理1.功能设A2、A1、B2、B1为输入端,F1、F2、F3为输出端,设A=A2A1。

B=B2B1(A2A1,B2B1表示两位二进制数)。

当A >B时,F1为1,F2、F3为0;当A<B时,F2为1,F1、F3为0;当A=B时,F3为1,F1、F2为0。

2.实现1)VHDL实现系统的VHDL设计通常采用层次化的设计方法,自顶向下划分系统功能并逐层细化逻辑描述。

VHDL 实体功能的描述可分为结构式、行为式和寄存器传输级(Register Transfer Level, RTL)描述三种。

此次实验结构比较简单,采用寄存器传输级描述的实现方式,选用并行信号赋值语句。

2)LPM实现参数化模板库(Library Parameterized Modules, LPM)提供了一系列可以参数化定制的逻辑功能模块。

采用LPM设计方法的主要优势在于设计文件与器件结构无关、高效布线和通用性三方面。

三、实验内容1.VHDL实现新建VHDL文件,输入以下代码说明:当VHDL设计电路反馈时,应将端口声明为buffer端口,而不是out端口。

若out端口需要反馈至电路内部时,常使用signal去实现反馈。

查看波形仿真网格参数设置:Simulation mode: Functional;End time: 2 us;Gride size: 100 ns;信号说明:a2a1和b2b1为二位二进制输入信号;f1f2f3 为三位二进制输出信号;数据信号参数设置:a2a1: Count Value→Counting→Increment by:01Count Value→Timing→Count every:400.0ns b2b1: Count Value→Counting→Increment by:01Count Value→Timing→Count every:100.0ns 管脚绑定:下载测试:程序下载完成后,由于管脚86、87、88、89均为关闭状态,即A、B输入均为00,f1f2f3输出为010,故只有管脚41所对应的二极管亮。

基于VHDL语言的数据比较器和译码器的设计PPT学习教案

基于VHDL语言的数据比较器和译码器的设计PPT学习教案
➢ VHDL语言具有良好的可读性,既可以被计算机接受,也 容易被人们所理解;
➢ VHDL语言可以与工艺无关编程; ➢ VHDL语言已做为一种IEEE的工业标准,便于使用、交流
和推广。
VHDL语言的不足之处
➢ 设计的最终实现取决于针对目标器件的编程器,工具的不同 会导致综合质量不一样。
第4页/共15页
WHEN OTHERS=>NULL;
END CASE;
END IF;
END IF;
DOUT<=TMP;
END PROCESS;
第6页/共15页
END ARCHITECTURE ART;
quartus ‖软件的基本使用方法
➢ 新建工程:FILE→New Project Wizard(实体名要和工程名一致) ➢ 新建文件:在当前工程下File →New 选择VHDL File,然后将程序输入,输入完成之后保存文
件FILE →Save AS 输入与实体名一致的文件名 ➢ 编译:首先要分配器件Assignments →Device 在Device family下选择CycloneⅢ系列的芯片;然
后双击左边小窗口的task栏下的Compile Design或者是点击快捷栏上的红色三角型按钮,等待 编译报告,如果有编译不成功有错误则需要检查并修改程序,然后保存并再次编译直至编译 无误 ➢ 仿真:分为时序和功能仿真;先功能仿真Processing →Simulator Tool →Simulation mode: functional →Generate Functional Simulation Netlist成功之后,File →New →Vector Waveform File 然后在空白处右击Insert →Insert Node or Bus将所用的管脚依次添加进去,再给输入管脚赋值, 然后保存(注意:文件名也要和实体名一致) Processing →Start Simulation,观察仿真报告及仿真结果。

VHDL仿真报告

VHDL仿真报告

VHDL仿真报告VHDL 仿真报告⼀、⼩组成员:徐瑞邯 04083052 张琨 04083063 李勋 04083023⼆、所选题⽬:(程序见压缩包,某些波形cp 周期较长,缩⼩尺度后仍可看到整个周期)徐瑞邯:74LS169和4选1MUX 组成的模四加减计数器(6-40b):clk ld pt uddata[3..0]q[3..0]d[3..0]s[1..0]y11q[3..0]clkcount169:count169_n2' h0 --mux4_1:mux4_1_n2' h3 --x波形如下:张琨:波形发⽣器(波形如下)(6-38(1)):李勋:0100111序列检测器(6-41):(两种⽅法)波形如下:三、所提问题及部分解答:徐瑞邯的问题:1、如何在RTL Viewer中显⽰每个端⼝,⽽不是以⽮量位型显⽰?(效果如图所⽰)答:把⽮量型数据转化为位型数据,例如可以把q换成q0 q1 q2 q3,但是会增加程序的复杂度,特别是在count_mux中例化元件时,会增加很多端⼝的例化,个⼈认为如果为了看清具体线路连接,可以做此修改(⼯程见压缩包),如果只是为了实现功能,则没有必要修改。

2、时钟信号⽤程序能否⾃动产⽣?答:在ModelSim 中可以⽤wait for产⽣时钟信号程序如下clock:processbeginwait for 10 ns;clk<=not clk;end process clock;⽽在Quartus II中wait for 只能⽤于仿真,不能出现在实体的进程中。

⽬前是在波形输⼊中⼿动加⼊时钟信号,如果把波形输⼊⽂件导出为vht⽂件(T est Bench)时,可以看出其中有上述语句。

3、若端⼝未赋初始值,该如何使系统正常运⾏?答:ModelSim 中对于没有赋初始值的端⼝⾃动赋’U’,所以在有反馈的电路中不能直接给反馈接收端⼝赋值,否则反馈接收端⼝(⼀般有初始值)也会变成’U’,从⽽影响加⼊CP后的功能。

基于VHDL的数值比较器、数据选择器、移位寄存器、60进制计数器、复杂ALU设计实验报告

基于VHDL的数值比较器、数据选择器、移位寄存器、60进制计数器、复杂ALU设计实验报告

基于VHDL的数值比较器、数据选择器、移位寄存器、60进制计数器、复杂ALU设计实验报告VHDL实验报告班级:电子学号:姓名:2014/5/23Experiment 1 两位二进制数的大小比较器一、实验目的:(1)熟悉QuartusII的开发环境、熟练掌握编程开发流程。

(2)学习VHDL的基本语法及编程设计。

二、实验内容:数值比较器设计三、实验要求:(1)熟练掌握QuartusII开发环境下对可编程逻辑器件进行程序化设计的整套流程;2)设计输入使用插入语言模板(Insert Template); ((3)在QuartusII开发环境下对设计程序进行时序仿真,将生成的配置文件下载到实验板,进行最终的实物测试验证。

四、实验原理:根据两位二进制数的大小得到对应的比较结果,其电路示意图及电路特性表为: 比较器特性表A B In_s In_l In_e 比较器电路示意图YsYe YlY A > B × × × 0 0 1A[3:0] Yl Number B[3:0] A < B × × × 1 0 0 Ye A = B 0 1 0 0 0 1 In_sYs Comparer In_l A = B 1 0 0 1 0 0 In_e A = B 0 0 1 0 1 0 A = B 0 0 0 × × × A = B × 1 1 × × × A = B 1 × 1 × × × A = B 1 1 × × × ×五、程序编写、调试及仿真(芯片型号:MAX?系列EPM1270T144C5) (1)程序编写:library ieee;use ieee.std_logic_1164.all;2entity Vhdl1 isport(a,b:in std_logic_vector(3 downto 0);ins,inl,ine: in std_logic;ys,ye,yl: out std_logic);end Vhdl1;architecture one of Vhdl1 issignal temps,tempe:std_logic; beginys<=temps;ye<=tempe;yl<=temps nor tempe;process(a,b,ine)beginif (a=b and ine='1')thentempe<='1';elsetempe<='0';end if;end process;process(a,b,ins)beginif(a<b) thentemps<='1';elsif(a=b and ins='1') then temps<='1';elsetemps<='0';end if;end process;end one;(2)功能仿真:3(3)芯片引脚设定:(4)适配下载结果六、结果分析本实验实现了两位二进制数的比较。

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

实验十五多路复用器与比较器的设计与仿真
一、实验内容
1.参照芯片74LS153的电路结构,在Quartus II中用逻辑图和VHDL语言设计四选一多路复用器;
2.从Quartus II中取7485器件(比较器)进行仿真与分析;用VHDL语言设计4位比较器,接着进行仿真与分析,电路逻辑结构参照芯片74x85。

二、实验要求
4选1多路复用器、比较器的逻辑表达式;
4选1多路复用器、比较器的逻辑图;
用VHDL语言设计4选1多路复用器、比较器。

三、电路功能介绍
1.74153:4选1多路复用器(4 to 1 Multiplexer),又叫4选1数据选择器
用途:可以对多个输入信号进行选择。

电视机里的频道转换开关就是一个多路开关。

逻辑框图
逻辑功能表
逻辑图
2.7485:4位大小比较器(4-Bit Magnitude Comparator)逻辑框图
逻辑功能表。

相关文档
最新文档