10.四选一数据选择器的设计—IF语句实现
verilog4选一数据选择器原理

verilog4选一数据选择器原理Verilog中的4选1数据选择器(MUX)是一种多路选择器,可以从4个输入信号中选择一个输出信号。
这种数据选择器的原理在于根据控制信号的不同将其中一些输入信号传递到输出端。
以下是对Verilog中的4选1数据选择器的原理的详细解释。
首先,一个4选1数据选择器包括4个输入信号(A,B,C,D),一个控制信号(S),以及一个输出信号(Y)。
控制信号(S)决定了哪个输入信号将被传递到输出端。
这里采用二进制的表示方法,控制信号(S)的取值范围为0到3、具体来说,当S=00时,输入信号A将被传递到输出端,当S=01时,输入信号B将被传递到输出端,当S=10时,输入信号C将被传递到输出端,当S=11时,输入信号D将被传递到输出端。
实现4选1数据选择器需要用到逻辑门电路。
常用的逻辑门有与门(AND),或门(OR),非门(NOT)等。
首先,将控制信号(S)的两个比特分别作为两个输入端口A和B的输入信号。
这两个输入端口将分别与输入信号的每一位进行与运算,得到4个输出信号。
那么接下来,控制信号(S)的两个比特将作为输入信号的每一位的控制信号。
假设输入信号为(A0,A1)。
当控制信号(S)为(0,0)时,即A0=0,A1=0,与运算得到的输出信号为(0,0,0,0),此时输出端Y将传递输入信号A。
当控制信号(S)为(0,1)时,即A0=0,A1=1,与运算得到的输出信号为(0,1,0,0),此时输出端Y将传递输入信号B。
当控制信号(S)为(1,0)时,即A0=1,A1=0,与运算得到的输出信号为(0,0,1,0),此时输出端Y将传递输入信号C。
当控制信号(S)为(1,1)时,即A0=1,A1=1,与运算得到的输出信号为(0,0,0,1),此时输出端Y将传递输入信号D。
最后,将4个输出信号通过或门进行运算,得到输出信号Y。
具体地,将4个输出信号的每一位进行或运算,得到的结果就是输出信号Y的每一位。
VHDL复习题

例题:十进制计数器(模十计数器)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNT10 ISPORT (CLK,RST,EN:IN STD_LOGIC;CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC );END COUNT10;ARCHITECTURE behave OF COUNT10 ISBEGINPROCESS(CLK, RST, EN)VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINIF RST = '1' THEN CQI := (OTHERS =>'0') ;ELSIF CLK'EVENT AND CLK='1' THENIF EN = '1' THENIF CQI < 9 THEN CQI := CQI + 1;ELSE CQI := (OTHERS =>'0');END IF;END IF;END IF;IF CQI = 9 THEN COUT <= '1';ELSE COUT <= '0';END IF;CQ <= CQI;END PROCESS;END behave;十进制计数器(模十计数器)library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity count10 isPort ( cp : in std_logic; rst : in std_logic;q : out std_logic_vector(3 downto 0)); end count10;architecture Behavioral of count10 issignal qn: std_logic_vector(3 downto 0);beginprocess(cp,rst)beginif (rst='1') thenqn<="0000";elsif (cp'event and cp='1')thenif (qn="1001") thenqn<="0000";else qn<=qn+1;end if;end if;end process;q<=qn;end Behavioral;3进制计数器(模三计数器)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter3 isport(clk,reset,en:in std_logic;qa,qb:out std_logic);end counter3;architecture behavior of counter3 is signal count:std_logic_vector(1 downto 0); beginprocess(reset,clk)beginif reset='1'thencount(1 downto 0)<="00";elseif(clk 'event and clk='1')thenif(en='1')thenif(count="10")thencount<="00";elsecount<=count+1;end if;end if;end if;end if;end process;qa<=count(0);qb<=count(1);end behavior;计数器:带允许端的模12计数器VHDL设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity COUNT12 isport (clk,clr,en: IN STD_LOGIC;qa,qb,qc,qd: OUT STD_LOGIC);End COUNT12 ;Architecture RTL of COUNT12 isSignal count_4 : STD_LOGIC_VECTOR(3 downto 0);Beginqa<=count_4(0);qb<=count_4(1);qc<=count_4(2);qd<=count_4(3);Process (clk,clr)beginif (clr=‘1’) thencoun_4<=“0000”;elsif (clk’event and clk=‘1’) thenif (en=‘1’) thenif (count_4=“1011” )thencount_4<=“0000”;elsecoun_4<=count_4+’1’ ;end if;end if;end if;end process;End rtl;带有WHEN OTHERS项的3—8译码器的行为描述的例子。
实验二四选一多路选择器的设计

实验二四选一多路选择器的设计姓名:庞啟明学号: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…..”的对话框,选择“是”自动创建工程。
这里先选择“否”,即暂时不创建工程流程。
verilog4选一数据选择器原理(一)

verilog4选一数据选择器原理(一)Verilog中的4选1数据选择器简介在数字电路中,数据选择器是一种常见的电路组件,用于从多个数据输入中选择一个输出。
Verilog是一种硬件描述语言,广泛用于数字电路的设计和仿真。
本文将介绍Verilog中的4选1数据选择器的原理和实现方法。
原理4选1数据选择器有4个输入和1个输出。
根据选择信号,从4个输入中选择一个输入作为输出。
选择信号是2位的二进制数,共有4种可能的状态,每种状态对应一个输入。
当选择信号为00时,输出为第一个输入;当选择信号为01时,输出为第二个输入;当选择信号为10时,输出为第三个输入;当选择信号为11时,输出为第四个输入。
逻辑电路图以下是4选1数据选择器的逻辑电路图:______S0 ----| || |S1 ----| |----- Y|______|Verilog实现下面是实现4选1数据选择器的Verilog代码示例:module mux4to1 (input [3:0] D, input [1:0] S, outpu t Y);assign Y = (S[1] & S[0] & D[3]) | (S[1] & ~S[0] & D [2])| (~S[1] & S[0] & D[1]) | (~S[1] & ~S[0] & D[0]);endmodule在上面的代码中,D是4个输入的信号线,S是选择信号线,Y是输出信号线。
根据选择信号的不同状态,使用逻辑运算符进行输入的选取,然后将结果输出到输出信号线Y上。
仿真测试为了验证4选1数据选择器的正确性,可以进行仿真测试。
以下是一个简单的测试示例:module test_mux4to1;// Declare signalsreg [3:0] D;reg [1:0] S;wire Y;// Instantiate the modulemux4to1 mux (D, S, Y);// Stimulusinitial begin// Test case 1D = 4'b0001; S = 2'b00; // Expect Y to be 0 #10;// Test case 2D = 4'b0001; S = 2'b01; // Expect Y to be 0 #10;// Test case 3D = 4'b0001; S = 2'b10; // Expect Y to be 0 #10;// Test case 4D = 4'b0001; S = 2'b11; // Expect Y to be 1 #10;$finish;endendmodule上述代码中,D和S是输入信号,Y是输出信号。
10.四选一数据选择器的设计—IF语句实现

5.项目编译
选择目标器件。选择菜单命令Assign | Device,弹出Device对话框。选择对话框的Device Family下拉列表框中的目标器件(EPM7128SLC84-10)引脚指定,编译。
6.项目时序仿真
创建波形文件—输入信号节点—设置仿真时间—编辑输入节点波形-运行仿真
9.实验箱上现象的分析描述与验证。
三、小结:
对学生在实验过程中遇到的问题进行分析,总结,做出合理的评价。
四、作业
将程序输入到MAX+PLUS II软件进行相关操作,完成实验报告。
旁批栏:
BEGIN
旁批栏:
if_label: PROCESS(a, b, c, d,sel)
BEGIN
IFsel="00" THEN y <= a;
ELSIFsel="01" THEN y <= b;
ELSIFsel="10" THEN y <= c;
ELSE y <= d;
END IF;
END PROCESSif_label;
1.必要的理论知识讲解
2.设计任务:
3.设计一个4选1数据选择器,a, b, c, d为数据输入端的端口名,sel(s1,s2)为选择控制信号输入端的端口名,y为输出。
4.设计过程:
(1)输入设计项目并将其设为当前项目
(2)在文本编辑窗中设计输入二输入与非门的VHDL代码
用IF语句实现:
LIBRARYieee;
USE ieee.std_logic_1164.all;
ENTITYif_caseIS
PORT ( a, b, c, d : INStd_Logic;
实验一 四选一多路选择器的设计与仿真

实验内容:
1.根据课本
2.2.3节的内容在QuratusⅡ软件上完成与或非门电路的VHDL程序
设计与程序仿真(原理图输入及其仿真暂不作为本次实验的要求),首先请完全按照课本内容走通一遍,熟悉源程序输入与仿真的过程,然后分别尝试修改工程名、VHDL文件名、波形文件名,看看对编译、仿真会造成什么样的影响?
2.以顺序描述语句和并行描述语句两种方式分别实现一个4选1多路选择器(请
利用上节课讲到的多选择控制IF语句、WHEN_ELSE并行赋值语句独立编程实现),实体名必须以各人学号作为后缀,例如:学号为123456的同学,可命名实体名为my_mux41_456,学号_456不可缺少,前面部分my_mux41可依据个人习惯任意命名。
在波形仿真时请任意设置输入端的时钟周期、偏移量与占空比,以区别于其他同学的仿真结果。
实验报告中至少应包含源程序、工程名、VHDL文件名、波形图文件名,以及仿真波形的截图。
实验报告:
除上面提到的实验报告要点外,标准实验报告的其它构成要素是必须的,请各位同学自己组织语言完善报告内容。
实验报告的重点应体现各人独立完成实验的过程、对实验的归纳总结等,这也将是评分的重点。
本门课程作为专业选修课,实验成绩是总成绩的重要组成部分,最后将统一上交归档,因此请同学们认真对待,杜绝抄袭。
每次实验一周后,请各班班长派代表收齐实验报告在上课前一并交给我。
缓交、不交、抄袭等问题都将对评分构成影响。
参考资料:
实体表达
结构体表达
WHEN_ELSE条件信号赋值语句
进程语句
多选择控制IF语句
逻辑操作。
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 囂)。
(VHDL实验报告)四选一数据选择器的设计

四选一数据选择器
乱弹的枇杷
二、实验目的
1、熟悉四选一数据选择器的工作原理。
2、进一步掌握VHDL顺序语句和并行语句的使用。
3、进一步熟悉QUARTUSⅡ软件的使用方法和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%,文件成功加载完成。
五、实验步骤
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
指定输入输出对应的芯片的引脚,注意一些引脚不能用。选择菜单命令Assign | Pin/Location/Chip,将设计的二输入与非门与目标芯片(本例为EPM7128SLC84-10)联系起来.
8.程序下载
Max+PlusII-progeammer-JTAG-Multi-DeviceJTAG chain setup-Select Programming file–找到你所要的.pof文件-add-OK
1.必要的理论知识讲解
2.设计任务:
3.设计一个4选1数据选择器,a, b, c, d为数据输入端的端口名,sel(s1,s2)为选择控制信号输入端的端口名,y为输出。
4.设计过程:
(1)输入设计项目并将其设为当前项目
(2)在文本编辑窗中设计输入二输入与非门的VHDL代码
用IF语句实现:
LIBRARYieee;
9.实验箱上现象的分析描述与验证。
三、小结:
对学生在实验过程中遇到的问题进行分析,总结,做出合理的评价。
四、作业
将程序输入到MAX+PLUS II软件进行相关操作,完成实验报告。
旁批栏:
USE ieee.std_logic_1164.all;
ENTITYif_caseIS
PORT ( a, b, c, d : INStd_Logic;
sel: INStd_Logic_Vector(1downto0);
y: OUTStd_Logic);
ENDif_case;
ARCHITECTURE logic OFif_caseIS
END logic;
5.项目编译
选择目标器件。选择菜单命令Assign | Device,弹出Device对话框。选择对话框的Device Family下拉列表框中的目标器件(EPM7128SLC84-10)引脚指定,编译。
6.项目时序仿真
创建波形文件—输入信号节点—设置仿真时间—编辑输入节点波形-运行仿真
重庆科创职业学院授课方案(教案)
课名:教 师:
班级:编写时间:
课题:
四选一数据选择器的设计—IF语句实现
授课时数
2
教学目的及要求:
1.掌握四选一数据选择器的原理
2.用IF设计程序并进行软件和硬件设计
教学重点:
VHDL程序设计和硬件设计
教学难点: VHDL语法的实现
教学步骤及内容 :
一、复习旧课
二、新课
BEGIN
旁批栏:
if_label: PROCESS(a, b, c, d,sel)
BEGIN
IFsel="00" THEN y <= a;
ELSIFsel="01" THEN y <= b;
ELSIFsel="10" THEN y <= c;
ELSE y < PROCESSif_label;