VHDL语言设计4选1多路选择器

合集下载

多路选择器与编码器的VHDL设计

多路选择器与编码器的VHDL设计

实验三多路选择器与编码器的VHDL设计一. 实验目的1.掌握硬件描述语言描述多路选择器的方法。

2. 掌握硬件描述语言描述编码器的方法3.学会使用VHDL进行简单的逻辑电路设计。

4. 掌握用Quartus II进行文本输入法进行电路设计、编译和仿真方法。

二、实验仪器设备1.PC机一台2.QuartusⅡ开发软件一套3.EDA技术实验开发系统一套三. 实验任务1. 设计一个4选1多路选择器用VHDL设计的4选1多路选择器中,当控制端S=0时多路选择器有效,S=1时禁止工作,输出封锁为低电平。

d0,d1,d2,d3分别为四个数据输入端的端口名,a0,a1为通道选择控制信号输入端的端口名,y为输出端的端口名。

(1)4选1多路选择器的VHDL程序entity mux4_1 isport(d0,d1,d2,d3: in bit;a0,a1,s: in bit;y: out bit);end;architecture one of mux4_1 issignal a: bit_vector(1 downto 0);Beginprocess(a0,a1)begina<=a1&a0;if (s='0') thencase a iswhen "00"=> y <=d0;when "01"=> y <=d1;when "10"=> y <=d2;when "11"=> y <=d3;end case;else y<='0';end if;end process;end;(2)根据编写的VHDL程序并在Quartus II软件中进行输入、编译和仿真。

其功能仿真波形如下图所示,通过波形分析符合4选1多路选择器的要求。

图1VHDL程序录入图2程序仿真波形图。

四选一多路选择器

四选一多路选择器

四选一选择器的VHDL程序实现及仿真一、四选一选择器的基本功能描述选择器常用于信号的切换,四选一选择器常用于信号的切换,四选一选择器可以用于4路信号的切换。

四选一选择器有四个输入端input(0)~ input(3),两个信号选择端a和b及一个信号输出端y。

当a、b输入不同的选择信号时,就可以使input(0)~ input(3)中某一个相应的输入信号与输出y端接通。

例如,当a=b=“0”时,input (0)就与y接通。

四选一电路的逻辑功能真值表如下图所示:我们可以根据上面的逻辑真值表,设计四选一电路系统的VHDL 源程序,并进行程序的编译和仿真。

二、编写VHDL源程序下面为四选一选择器的VHDL源程序:四选一选择器VHDL源程序如下:LIBRARY IEEE; ***库的调用***USE IEEE.STD_LOGIC_1164.ALL; ***库的调用***ENTITY mux4 IS ***实体定义*** PORT (input:IN STD_LOGIC_VECTOR(3 DOWNTO 0); ***输入管脚的定义***a,b:IN STD_LOGIC; ***输入管脚的定义***y:OUT STD_LOGIC ); ***输出管脚的定义***END mux4;ARCHITECTURE rtl OF mux4 IS ***结构的定义***SIGNAL sel:STD_LOGIC_VECTOR (1 DOWNTO 0); ***信号定义***BEGINsel<=b&a;PROCESS (input,sel) ***进程的定义***BEGINIF(sel="00") THENy<=input(0);ELSIF(sel<="01") THENy<=input(1);ELSIF(sel<="10") THENy<=input(2);ELSEy<=input(3);END IF;END PROCESS;END rtl;三、文本文件的编译及仿真全过程在编辑器中输入并保存了以上四选一选择器的VHDL源程序后就可以对它进行编译了,编译的最终目的是为了生成可以进行仿真、定时分析及下载到可编程器件的相关文件,如*.cnf,*.rpt,*.snf,*.pof 等。

实验一 FPGA VHDL四选一数据选择器的设计

实验一 FPGA VHDL四选一数据选择器的设计
开发软件:QartusII 8.0
实验设备:FPGA实验箱
拟用芯片:Altera EP3C55F484C8
3.实验设计
1)系统原理
根据4选1数据选择器的工作原理,有公式:
Y= + B+ C+ D
可见,要实现功能,需要6个输入,一个输出。其中 是数据选择端,A,B,C,D是数据输入端。由 输出高低电平(开关信号)பைடு நூலகம்定数据的输出和传送。
实验二四选一数据选择器的设计
1实验目的
(1)进一步熟悉和掌握QartusII的使用方法;
(2)掌握FPGA实验箱使用方法;
(3)学习和掌握电路原理图的设计流程
1.实验内容
使用QartusII的元件库,通过元件图的方式设计具有4选1功能的数据选择器,并使用FPGA实验箱对程序进行硬件下载,验证。
2.实验条件
L7=1,L8=开
L7=开,L8=开
发声频率
很慢

较快

表2-1 开关不同位置时蜂鸣器发声状态
实验箱结果如图2-5所示
图2-5实验箱进行试验
5.心得体会
通过这次实验,让我学习到了如何在QartusII中使用原理图的方式做出所需要的功能器件。也学会了如何使用FPGA实验箱。
使用实验箱旁边的频率信号低的4个信号做输入信号,通过FPGA实验箱上的蜂鸣器发出的声音频率快慢来测试实验是否成功。
A输入接入1HZ信号B输入接入4HZ信号
C输入接入8HZ信号D输入接入16HZ
SO输入接入L8开关S1输入接入L7开关
Y输出接入蜂鸣器
可得实验结果如下表 表2-1所示
L7=关,L8=关
L7=关,L8=开
2)电路原理图

4选1多路选择器VHDL语言设计

4选1多路选择器VHDL语言设计

4选1多路选择器VHDL语言设计在VHDL语言中设计一个4选1多路选择器主要涉及到以下几个方面:实体声明、端口声明、内部信号声明、内部结构设计、行为建模以及仿真测试。

下面是一个VHDL语言设计的参考模板,详细解释了每个步骤的实现方法。

1. 实体声明(Entity Declaration)```vhdlentity mux_4to1 isportA, B, C, D : in std_logic;S : in std_logic_vector(1 downto 0);CLK : in std_logic;Y : out std_logicend mux_4to1;```2. 端口声明(Port Declaration)端口声明定义了输入和输出端口的类型。

在这个例子中,输入和输出端口的类型都是标准逻辑类型。

```vhdlarchitecture behavioral of mux_4to1 issignal input_mux : std_logic_vector(3 downto 0);beginA <= input_mux(0);B <= input_mux(1);C <= input_mux(2);D <= input_mux(3);end behavioral;```3. 内部信号声明(Internal Signal Declaration)内部信号声明是为了辅助模块内的信号传输和处理。

在这个例子中,我们需要声明一个内部信号来保存选择信号S对应的多路选择器输入信号。

```vhdlarchitecture behavioral of mux_4to1 issignal input_mux : std_logic_vector(3 downto 0);signal mux_out : std_logic;beginA <= input_mux(0);B <= input_mux(1);C <= input_mux(2);D <= input_mux(3);end behavioral;```4. 内部结构设计(Internal Structure Design)内部结构设计定义了多路选择器的逻辑结构。

VHDL语言设计4选1多路选择器讲解学习

VHDL语言设计4选1多路选择器讲解学习

V H D L语言设计4选1多路选择器4选1多路选择器的VHDL描述要求:THEN语句和CASE语句实现4选1多路选择器,其中选择控制信号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多路选择器(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)编译的结果如下:编译报告:二、解法2:用CASE语句实现4选1多路选择器(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并置操作PROCESS(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 case_mux41;(2)编译结果:编译报告:。

(VHDL实验报告)四选一数据选择器的设计

(VHDL实验报告)四选一数据选择器的设计
3)点击 Add Hardware 按钮,出现 Add Hardware 对话框,在 Add Hardware 对话 框中,从 Hardware type 列表中选择所需要硬件类型,如果是 USB 接口的请参照用户使用手册 中的 USB 电缆的安装与使用,如果使用的是并口下载线则选取如下图 所示的硬件类型,点击 OK按钮,完成对硬件类型的设置。回到编程器硬件设置窗口, 点击 Close 按钮退出设置。则在 编程器对话框中的编程硬件类型会出现刚才选取的编程器硬件。 4)此次实验室所用的安装驱动的方式为:右键“我的电脑”--设备管理器--双击有 黄色问号通用USB--驱动程序--更新驱动程序--从列表或安装……--下一步--下一步--从磁盘安 装--浏览--在我的电脑D盘中选择找到USB bluster即可安装好驱动。 5)如果软件已运行一个工程,则在打开编程器的时候,编程器窗口会自动出现这个 工程文件要加载到目标器件的文件,如果要加载其它文件可以从其它地方进行添加更改。选好加 载文件后,再点选 Progam/Configure,编程模式选取 JTAG 模式,点击 STRAT进行文件加载, 直到加载进度变为 100%,文件成功加载完成。
五、实验步骤
2、建立文本设计文件
1)建立另一工程(注意不要和原来的图形设计文件工程重名), 在创建好设计工程后,选择 File--New--Device Design Files--VHDL File,点击OK按钮,打开进入文本编辑器对话框。 2)在文本编辑器中输入对应VHDL程序代码(本次实验则需输入 四选一数据选择器的代码,注意实体名与所建工程名的实体名的一致 性),本次实验我所用的VHDL顺序语句代码是CASE语句,其并行语句的 代码用的是条件信号赋值语句,具体代码如下图所示: 3)对文本文件进行编译。选择processing--compiler tool-start或直接点快捷栏上的三角形则会出现编译器窗口。需要说明的是在 进行设计文件的综合和分析,也可以单独打开某个分析综 合过程不必进 行全编译界面。当完成上述窗口的设定后,点击 START 按钮进行设计文 件的全编译。如果文件有错,在软件的下方则会提示错误的原因和位置, 以便于使用者进行修改直到设计文件无错。整个编译完成,软件会提示 编译成功。

四选一多路选择器三种方法

四选一多路选择器三种方法

四选⼀多路选择器三种⽅法四选⼀多路选择器三种⽅法module MUX41a(a,b,c,d,s1,s0,y); input a,b,c,d;input s1,s0;output y;reg y;always@(a or b or c or d or s1or s0); begin:MUX41case({s1,s0})2'b00:y<=a;2'b01:y<=b;2'b10:y<=c;2'b11:y<=d;default:y<=a;endcaseendendmodule计数器module CTR(CLK,Q,R);input CLK,R;output[3:0]Q;reg[3:0]Q;always@(posedge CLK or negedge R)if(!R)Q<=0;else Q<=Q+4'b0001;endmoduleD触发器module DFF(CLK,D,Q,RST0,RST1);input CLK,D,RST0,RST1;output Q;reg Q;always@(posedge CLK or negedge RST1) begin if(!RST1)Q<=0; else if(RST0==1)Q<=0;else if(RST0==0)Q<=D;endendmoduleSR锁存器module SR(S,R,CLK,RD,Q);input S,R,RD,CLK;output Q;reg Q;wire[3:0]H;assign H={CLK,RD,S,R};always@(*)begincase(H)H<=4'b1000:Q<=Q; H<=4'b0:Q<=0; H<=4'b?1??:Q<=0; H<=4'b1010:Q<=1;H<=4'b1001:Q<=0; default:Q<=0; endcaseendendmodule⼆进制转换成格雷码module btog(b,g); input[3:0]b;output[3:0]g; assign g[3]=b[3]; assign g[2]=b[3]^b[2]; assign g[1]=b[2]^b[1]; assign g[0]=b[1]^b[0]; endmodule 格雷码转换⼆进制module gtob(b,g); input[3:0]g;output[3:0]b;assign b[3]=g[3];assign b[2]=g[3]^g[2];assign b[1]=g[2]^g[1];assign b[0]=g[1]^g[0];endmodule乘法器module mul2(H,F,R);input[1:0]H,F;output[3:0]R;assign R[0]=H[0]&F[0];assign R[1]=(H[1]&F[0])^(H[0]&F[1]);assign R[2]=(H[1]&F[0]&H[0]&F[1])^(H[1]&F[1]); assign R[3]=H[1]&F[0]&H[0]&F[1]&H[1]&F[1]; //*assign R= {R[3],R[2],R[1],R[0]};/*//*assign H={H[1],H[0]};/*//*assign F={F[1],F[0]};/*Endmodule七段数码管显⽰module SMG(A,B);input[3:0]A;output[6:0]B;reg[6:0]B;always@(A)case(A)4'b0000:B<=7'b0111111;4'b0001:B<=7'b0000110;4'b0010:B<=7'b1011011;4'b0011:B<=7'b1001111;4'b0100:B<=7'b1100110;4'b0101:B<=7'b1101101;4'b0110:B<=7'b1111101;4'b0111:B<=7'b0000111;4'b1000:B<=7'b1111111;4'b1001:B<=7'b1101111;4'b1010:B<=7'b1110111;4'b1011:B<=7'b1111100;4'b1100:B<=7'b0111001;4'b1101:B<=7'b1011110;4'b1110:B<=7'b1111001;4'b1111:B<=7'b1110001;default:B<=7'b0111111;endcaseendmodule同步复位:顾名思义,同步复位就是指复位信号只有在时钟上升沿到来时,才能有效优点:a、有利于仿真器的仿真。

练习3_VHDL实现四选一的程序(选择信号)

练习3_VHDL实现四选一的程序(选择信号)

课本P28-49
第五讲重点:
重点:1. 掌握VHDL语言的实体和结构体的描述。

(P30_P32)PORT端口说明。

(P31)
2. 熟悉库和程序包的说明语句。

(P33_P34)
例如:LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
USE IEEE. STD_LOGIC_UNSIGNED.ALL;
USE IEEE. STD_LOGIC_SIGNED.ALL;
USE IEEE. STD_LOGIC_ARITH.ALL
3. 熟悉数据类型(P42-46)
BIT、BIT_VECTOR、STD_LOGIC、STD_LOGIC_VECTOR。

2. 熟悉信号赋值语句的用法(P57_P58)
(包括:并行信号赋值语句、条件信号赋值语句和选择信号赋值语句。


1、写出一位全加器电路(如下图)的实体和结构体描述。

(用并行信号赋值语句)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY IS
PORT ( );
END ;
ARCHITECTURE OF IS
BEGIN
S<=
Co<=
END ;
2、试写出8选1多路选择器的VHDL描述。

选择控制信号为s2,s1和s0,输入信号为i0~i7输出信号为y。

(要求分别用条件信号赋值和选择信号赋值语句)参考下面4选1多路选择器的VHDL描述
(1)用条件信号赋值语句
(2)用选择信号赋值语句
现。

VHDL语言设计四选一选择器

VHDL语言设计四选一选择器

课程: 数字逻辑与数字系统VHDL语言设计四选一选择器实验报告系:电子信息与计算机科学系专业:自动化班级:文自112—2班姓名:桑*超学号: 2011905192**指导教师:徐红霞学年学期:2012-2013学年(第一学期)2012年12月15日姓名: 桑*超班级: 文自112-2班学号: 2011905192** 试验: VHDL语言设计日期:2012.12.15 指导老师: 徐洪霞一、实验报告的名称: VHDL语言设计二、本次实验的目的:1.掌握VHDL 语言的设计技巧2.用VHDL语言设计四选一选择器三、设计过程:1.工程编译源:用VHDL语言编程。

2.功能仿真:将功能编译后的结果进行仿真。

3.引脚锁定:将个信号按要求分配到相应引脚.4.物理实现:将结果下载到所悬着的器件中四、写出源程序,画出防真波形图.library ieee;use ieee.std_logic_1164.all;entity mux4_1 isport( a,b,c,d : in std_logic;s : in std_logic_vector(1 downto 0);z : out std_logic );end mux4_1;architecture one of mux4_1 isbeginprocess(s,a,b,c,d)begincase s iswhen "00"=>z<=a;when "01"=>z<=b;when "10"=>z<=c;when "11"=>z<=d;when others =>z<=null;end case;end process;end one ;波形仿真图:五、实验总结,主要包括实验中所犯错误,怎样改正等1.在文件名必须与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进行文件编译。

VHDL语言设计4选1多路选择器演示教学

VHDL语言设计4选1多路选择器演示教学

VHDL 语言设计 4 选 1多路选择器4选1多路选择器的VHDL描述要求:THEN语句和CASE语句实现4选1多路选择器,其中选择控制信号 si和s0 的数据类型为STD_LOGIC_VECTORs仁?O?,sO=?O?; s仁?O?,sO=?1?; s1=? 1?,sO=?O?和s仁?1?,sO=?1?时,分别执行 y<=a、yv=b、yv=c、yv=d。

一、解法1:用IF_THEN语句实现4选1多路选择器(1)程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux41 ISPORT (a,b,c,d: IN STD_LOGIC;sO: IN STD_LOGIC;s1: IN STD_LOGIC;y: OUT STD_LOGIC);END ENTITY mux41;ARCHITECTURE if_mux41 OF mux41 ISSIGNAL sOs1 : STD_LOGIC_VECTOR(1 DOWNTO 0)定义标准逻辑位矢量数据 BEGINsOs1<=s1 &s0; --s1 相并sO,即s1与sO并置操作PROCESS(sOs1,a,b,c,d)BEGINIF sOs1 = "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)编译的结果如下:_1 ―LIBRARYZ USE IEEE・2rTD_L0GTC_l.l石岂・ALL;3 3 EWTITY ttittK41lS3 SPORT (引4 6* IN 5TD_LOfJIC;55U;IN STP_LOGIC;631:IN ST^OGIC:7y:OUT 号T D I L OGM):a EMD ENTITY mux41;9: ■: ARCHITECTURE l£_mux41 OF ntux^a IS10SIGMAL sOsl : STD_LOGIC_VECTOR (1 DOUWTO 0);—定义标准逻辑位矢虽数据11 B BEGIN12gOsK^gltsO;——s 上相并即R与如并査操柞13PROCESS [s口sl r a.to^cr,d)148EGIN15S IF sOst = J|00»THEN y <= a;IS S!ELS IF sOsl = f,m rr THEN y «h;17 BELSIF sOsl = M10r,THEN y <= c;19. ELSE y <- d;3 EMb TF^20EHD PROCESS;21EWP ARCHITECTURE22编译报告:Flow Status.Succsssfiil - !lon Miy 23 2^:24:40 201&Quartus II Versi on90 Buili 132 02/25/2009 S5 Full VersicnRe^isiom Name mix4iTop-level Entity Name n*ux4iFamily FLEK1CKDevice ErF10KIQlJCa4-4Timing Finfcl用包七tim lug r equir eniexit Y esTot 1®番iu ents 2 / 7T6 ( < 1 )Total pins T F阴〔12慕〕Total memory bi Is0/6.144 ( D % )二、解法2:用CASEg句实现4选1多路选择器(1)程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux41 ISPORT (a,b,c,d: IN STD_LOGIC;sO: 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并置操作PROCESS(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 case_mux41;(2)编译结果:1LTBRARV IEEE;2USE IEEE,STD LOGIC i 15^1 .ALL;3j ENTITY K1UK41IS4SPORT (a f to r c r d: IN STD_LOGIC;5sn:IN STD_LCX;IC;651;IN TTD^LOGTC;7y: OUT STD^LOGIC);8ENDENTITY-H1UX41;9□ARCHITECTURE case_wux4i OF I»LD<41IS10SIGNAL sosl : 5TD~LOGIC_VECTOR(1 DOWNTO 口心--定文标准逻辑位矢區数据类型11/:BEGIN122031<=Sl£sa;__ml相并"0r Wsl与兰□并萱燥件13H PROCESS(snsl r a r b r e f ri)BEGIM15□CASE sOsl IS —斐馆于克值恚的c*匕语旬ie WHEN f,ao if -> y 5 a;17WHEN f,0i,F=> y <- b;!□WHEN "1口“三A y <= c;19WHEN rr ll FT F y a= d;20WHEN OTHERS =AHULL ;21 EWD 匚ASE;22EMD PROCESS;END case_inux41;24编译报告:Flo* Status SucceKifvl ~ Mon fflfcy 23 22 31:55 20fEQuartus II Version9.0 Btiild 132 02/25/20M ST lull VersionRevi'sicin Name mux41T op^laval Inti ty Nwna wux-41F anally FmiOKD evi. c e E?PLOE1Dire4-4Timkiig Jftoifvli FinUMet timing re^uir畑Total lagi c el 2 / 5T6 ( < 1 )Total pins7 / 5S ( 12 )T otal memory bits0 / e, 144 ( D 囂)。

四选一数据选择器实验报告

四选一数据选择器实验报告

四选一数据选择器11微电子黄跃1117426021【实验目的】1.四选一数据选择器,2.学习V erilog HDL文本文件进行逻辑设计输入;3.学习设计仿真工具modelsim的使用方法;【实验内容】1. 实现四选一数据选择器的“V erilog ”语言设计。

2. 设计仿真文件,进行验证。

【实验原理】数据选择器又称为多路转换器或多路开关,它是数字系统中常用的一种典型电路。

其主要功能是从多路数据中选择其中一路信号发送出去。

所以它是一个多输入、单输出的组合逻辑电路。

4选1数据选择器的元件符号如图一所示,其中D0、D1、D2、D3是4位数据输入端,A0和A0是控制输入端,Y是数据输出端。

当A1A0=00时,输出Y=D1;A1A0=01时,Y=D1;A1A0=10时,Y=D2;A1A0=11,Y=D3。

由真值表写出输出逻辑表达式301201101001)()()()(D A A D A A D A A D A A F +++=由逻辑表达式做出逻辑电路图。

【程序源代码】module mux4_1(sel,in,out);input [1:0] sel;input [3:0] in;output out;reg out;always@(sel or in) begincase ({sel[1],sel[0]})2'b00: out=in[0];2'b01: out=in[1];2'b10: out=in[2];2'b11: out=in[3];default: out=1'bx;endcaseendEndmodule测试程序代码如下:module test_mux4_1;reg [1:0] S;reg [3:0] IN;wire Y;mux4_1 M1(.sel(S),.in(IN),.out(Y));always #10 IN[0]=~IN[0];always #20 IN[1]=~IN[1];always #40 IN[2]=~IN[2];always #80 IN[3]=~IN[3];initialbegin S=1'b0;IN=4'h0;#100 $stop;endalways #10 S=S+1;endmodule【仿真和测试结果】【实验心得和体会】这次实验与上次相比有明显的进步,通过这次实验我对modelsim的应用更加得心应手,深切的体会到了verilog是一种描述性语言,这次实验总的来说是比较顺利的,但在实验过程中还是遇到了一些问题,比如端口的匹配问题,在写程序的时候误将位宽写在了变量名的后面,虽然程序能够运行但有警告,仿真波形是错误的,可见在写程序时警告有时也是致命的,这要求我们在学习的过程中思想一定要严谨!其次在做实验时一定要多想,例如在学习这门课时,书上说在模块外部输入可以是wire型或reg型,但在写程序时激励模块往往要初始化数据,所以编程时其类型往往声明为reg型,通过这个例子我明白了书上所说的有时往往是一个比较笼统的,而更多的需要我们自己去实践、探索、勤思考,只有这样我们才能把书本上的知识转化为属于我们自己的知识,才能在学习的道路上走的更远!原文已完。

四选一电路VHDL程序编写

四选一电路VHDL程序编写

今天我们要编写的是一个四选一电路:逻辑符号示意图:sel 是选择控制端,共两位,可形成4种状态,可控制输出端q 与那个输入端相连接。

源代码:波形仿真图:功能简述:就是在不同地址a[1:0]的取值下,送左边的一个值d0(或d1,或d2,或d3)到q.因为有四个值,即四种情况,所以要2根地址线。

(2的2次方=4)逐行详解:(为了节省大家的时间,我们从下面开始讲解新的和易出错的知识点,对于框架知识等可去前面几节查找)9:输入的地址端口a[1:0].注意;对于用DOWNTO定义的数组,在写其值时其最高位在最左边。

可以看到21~23的值里,最左边是最高位。

18:PROCESS语句。

注意:敏感信号表里要把d0,d1,d2,d3也写入。

为什么?请记住不是只有当地址变化了时PROCESS才执行。

举一种情况:地址不变,但输入数据d变了,那么输出也要跟着变化。

一般的,在PROCESS中,只要在赋值右端的信号,被判断的信号都要放到敏感信号表里。

否则Quartus会出一个警告(当然你可以通过警告来最后添加敏感信号,但还是不要养成这个坏习惯。

)20~25:CASE语句。

属于顺序语句,处理多分支的情况。

语法结构;CASE 表达式ISWHEN 选择值1 => 顺序语句1;WHEN 选择值2=> 顺序语句2;……………….WHEN OTHERS => 顺序处理语句n;END CASE;这个CASE语句类似于C里的switch。

有几点要注意:(1)选择值不能有交集,即每个选择值必须不同。

(2)选择值必须包含该表达式所以的可能值,若不能一一例举全,就必须用关键词OTHERS来涵盖其他所有的值的情况。

如24句中:当a不是”00”,”01”.”10”时,就执行这个OTHERS,使q<=d3,当然,这里的OTHERS就是”11”。

(3)CASE 中的各个分支是并行的,即优先级是一样的,这点是与IF构成的选择器的不同点。

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

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

实验五 4选1多路复用器和4位比较器设计与仿真班级信息安全一班姓名邓一蕾学号201208060106指导老师袁文澹一、实验目的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建立一个文件。

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

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

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

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

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

VHDL实验 4选1多路选择器

VHDL实验  4选1多路选择器

VHDL实验报告学院: 理学院专业:电子信息科学与技术班级:电科091END IF;END PROCESS; PROCESS进程语句结束END ARCHITECTURE rtl;1.实验源程序如下:实验步骤与数据82. 创建文件夹,保存文件。

3.选择芯片为‘EP1C6Q240C8’。

4. 完成设置,显示文件信息。

从显示中我们看到项目和实体名为:MUX4A1,其中只有一个文件,芯片为Cyclone系列的EP1C6Q240C8。

5.运行通过6.运行后的RTL视图7.波形分析(1)添加文件和引脚。

(2)设置输入信号。

可以对输入进行设置.结果分析:①当b='0',a='0'时候,选择出input(0),②当b='0',a='1',时候,选择出input(1)③当b='1',a='0'时候,选择出input(2),④当b='1',a='1'时候,选择出input(3),符合程序结果8.配置引脚⑴选择“Assignments”菜单的“Pins”命令,打开引脚编辑窗口。

四选一数据选择器的引脚分配如下:(2)在设置完引脚后,再次对程序进行编译。

这样就把程序与FPGA的引脚联系起来,这样才能将程序下载到FPGA 开发系统中进行运行仿真。

下载到FPGA中,并验证程序的运行结果。

(3)配置硬件驱动为“ByteBlassterMV[LPT1]”,然后“start”下载,到下载为100%即可完成和对程序进行试验。

9.实验结果。

VHDL语言 四选一数据选择器 多种描述

VHDL语言 四选一数据选择器 多种描述

使用if_then语句来描述四选一数据选择器library ieee;use ieee.std_logic_1164.all;entity ze isport(s0,s1 : in std_logic;a,b,c,d : in std_logic;y:out std_logic);end ze;architecture ab of ze issignal s: std_logic_vector(1 downto 0); begins<=s1&s0;process(s)beginif s<="00" then y<=a;elsif s<="01" then y<=b;elsif s<="10" then y<=c;else y<=d;end if;end process;end ab;使用case语句来描述四选一数据选择器library ieee;use ieee.std_logic_1164.all;entity xuan isport(s0,s1 : in std_logic;a,b,c,d : in std_logic;y:out std_logic);end xuan;architecture ab of xuan issignal s: std_logic_vector(1 downto 0);begins<=s1&s0;process(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 ab;使用when_else语句来描述四选一数据选择器library ieee;use ieee.std_logic_1164.all;entity xuan isport(s0,s1 : in std_logic;a,b,c,d : in std_logic;y:out std_logic);end xuan;architecture ab of xuan issignal s: std_logic_vector(1 downto 0);begins<=s1&s0;y<=a when s<="00" elseb when s<="01" elsec when s<="10" elsed ;end ab;。

实验二 四选一多路选择器的设计

实验二 四选一多路选择器的设计

实验二四选一多路选择器的设计姓名:庞啟明学号:1112120110 专业:自动化一、实验目的进一步熟悉QuartusⅡ的Verilog HDL文本设计流程,学习组合电路的设计、仿真和硬件测试。

二、实验原理if_else条件语句描述方式,以过程语句引导的顺序语句,适合描述复杂逻辑系统的行为描述语句。

(1)以模块定义语句关键词module_endmodule引导完整的电路模块。

(2)以input和output语句引导模块的外部端口。

(3)以reg等关键词定义模块内将出现的相关信息的特征和数据类型。

(4)以always @ 等关键词引导对模块逻辑功能描述的语句。

负责描述电路器件的内部逻辑功能和电路结构。

三、实验设备与软件平台实验设备:计算机、FPGA硬件平台是Cyclone系列FPGA软件平台:Quartus II 9.1 (32-Bit)、5E+系统四、实验内容编写Verilog程序描述一个电路,实现以下功能:具有6个输入端口 A、B、C、D、S1、SO,A、B、C、D均为输入端口,位宽为1;Sl、S0为通道选择控制信号端,位宽为1;Y为输出端口,位宽为1。

当S1S0为“00”时,A的数据从Y输出,S1S0为“01”时,B的数据从Y输出,S1S0为“10”时,C的数据从Y输出,S1S0为“11”时,D的数据从Y输出。

五、实验步骤设计流程:1、编辑和输入设计文件(1)、新建一个文件夹如D:\MUX41 ,本工程所有文件将存放在此目录中。

1)输入VHDL源程序打开QuartusII,选择菜单File->New。

选择Verilog HDL File,输入源程序。

2)文件存盘选择File->Save As命令,找到已设立的文件夹D:\MUX41,存盘文件名应与实体名一致,存盘为MUX41.v。

当出现语句“do you want to create…..”的对话框,选择“是”自动创建工程。

这里先选择“否”,即暂时不创建工程流程。

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

4选1多路选择器的VHDL描述
要求:THEN语句和CASE语句实现4选1多路选择器,其中选择控制信号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多路选择器
(1)程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY mux41 IS
PORT (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 IS
SIGNAL s0s1 : STD_LOGIC_VECTOR(1 DOWNTO 0);--定义标准逻辑位矢量数据BEGIN
s0s1<=s1&s0; --s1相并s0,即s1与s0并置操作
PROCESS(s0s1,a,b,c,d)
BEGIN
IF 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)编译的结果如下:
编译报告:
二、解法2:用CASE语句实现4选1多路选择器(1)程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY mux41 IS
PORT (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 IS
SIGNAL s0s1 : STD_LOGIC_VECTOR(1 DOWNTO 0);--定义标准逻辑位矢量数据类型
BEGIN
s0s1<=s1&s0; --s1相并s0,即s1与s0并置操作
PROCESS(s0s1,a,b,c,d)
BEGIN
CASE 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 case_mux41;
(2)编译结果:
编译报告:。

相关文档
最新文档