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)用选择信号赋值语句
现。

  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)编译结果:
编译报告:。

相关文档
最新文档