10.四选一数据选择器的设计—IF语句实现
- 格式:doc
- 大小:39.00 KB
- 文档页数:5
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的每一位。
例题:十进制计数器(模十计数器)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选一数据选择器原理(一)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是输出信号。
实验内容:
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多路选择器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 囂)。
四选一数据选择器课程设计EDA课程设计报告题目:四选一数据选择器院系班级:设计者:指导老师:设计时间:目录目录............................................................... - 1 - 1、设计目的、要求......................................... - 2 -1.1、设计目的.......................................... - 2 -1.2、系统设计要求.................................. - 2 -1.3、设计工具.......................................... - 3 -2、设计原理及相关硬件................................. - 3 -2.1、系统设计方案及原理...................... - 3 -2.2、硬件原理.......................................... - 4 -3、主要模块设计............................................. - 5 -3.1、模块xy4 ........................................... - 5 -4、系统编译及仿真过程................................. - 6 -4.1、工程建立.......................................... - 6 -4.2、系统编译.......................................... - 7 -4.3、仿真.................................................. - 8 -5、硬件验证过程和分析................................. - 8 -5.1、引脚设置和保护.............................. - 8 -5.2、硬件下载.......................................... - 9 -6、实验参考程序........................................... - 12 -6.1、模块xy4 ......................................... - 12 -7、总结........................................................... - 14 -1、设计目的、要求1.1、设计目的了解并掌握一般设计方法,具备初步的独立设计能力;掌握用VerilogHDL语言程序的基本技能;提高综合运用所学的理论知识独立分析和解决问题的能力;进一步掌握EDA技术的开发流程,学习其独特的运用,进一步的提高自己的动手能力和知识领域。
XX大学实习(实训)报告实习(实训)名称:电工电子实习学院:专业、班级:指导教师:报告人:学号:时间: 2011年7月1日至 2011年7月8日实习主要内容:(1)了解EDA技术的发展及应用(2)掌握VHDL语言的基础知识,熟悉在数字电路系统设计中VHDL程序设计(3)学习MAX+PLUSⅡ软件的应用方法(4)应用EDA技术的设计方法完成4选1数据选择器的设计(采用原理图和文本法两种方法实现),并在MAX+PLUSⅡ上仿真主要收获体会与存在的问题:通过课程设计,发现自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。
同时也体会到设计课的重要性和目的性所在。
同时这次实习也有很多收获,首先我们学会了MAX+PLUSⅡ软件的应用方法,并且能够独立设计出原理图,其次本次设计课培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。
指导教师意见:建议成绩:指导教师签字:年月日备注:实习报告1.目的(1)通过实习掌握maxplus2软件的使用和VHDL语言的基础知识(2)应用maxplus2完成四选一数据选择器的设计,并实现仿真。
2.内容2.1 maxplus2的认识(1)Max+plusⅡ是Altera公司提供的FPGA/CPLD开发集成环境,Altera 是世界上最大可编程逻辑器件的供应商之一。
Max+plusⅡ界面友好,使用便捷,被誉为业界最易用易学的EDA软件。
在Max+plusⅡ上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。
(2)、Max+plusⅡ开发系统的特点很多,比如开放性的界面,编辑过程与结构无关,丰富的设计库,硬件描述语等。
(3)、Max+plusⅡ软件具有开放核的特点,允许设计人员添加自己认为有价值的宏函数。
技能点四(数据选择器设计练习)数据选择器可以从多组数据来源中选取一组送入目的地。
它的应用范围相当广泛,从组合逻辑的执行到数据路径的选择,经常可以看到它的踪影。
另外在如时钟、计数定时器等的输出显示电路中都可以利用多路选择器设计扫描电路来分别驱动输出装置(通常为七段数码显示管,点矩阵或液晶面板)以降低功率的消耗。
有时也希望把两组没有必要同时观察的数据,共享一组显示电路以降低成本。
数据选择器的结构是2N个输入线,会有N个地址线及一个输出线配合。
现以一个4选1数据选择器为例,其真值表如表 5 - 1所示,外部端口示意图如错误!未找到引用源。
所示。
表 5 - 14选1电路真值表程中使用CASE语句,或者使用WITH SELECT构造或使用结构VHDL。
现用IF语句对它进行描述,就可以得到如例1所示的程序。
例1:4选1多路选择器(使用“IF”语句描述)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISPORT(data0,data1,data2,data3:IN STD_LOGIC_VECTOR(3 DOWNTO 0);--数据输入a,b:IN STD_LOGIC;--选择输入y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));--数据输出END ENTITY MUX4;ARCHITECTURE art OF mux4 ISSIGNAL sel : STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINsel<=b&a;y<= data0 WHEN sel="00" ELSEdata1 WHEN sel="01" ELSEdata2 WHEN sel="10" ELSEdata3 WHEN sel="11" ELSE"0000";END ARCHITECTURE art;4选1多路选择器电路的仿真波形如图 5 - 1所示。
4选1多路选择器VHDL语言设计一.4选1多路选择器VHDL语言设计4选1多路选择器源代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY max4_1 ISPORT(a,b,c,d,s1,s2 : IN STD_LOGIC;y : OUT STD_LOGIC);END ENTITY max4_1;ARCHITECTURE hf1 OF max4_1 ISSIGNAL ss : STD_LOGIC_VECTOR (0 TO 1); BEGINss<=s2&s1;PROCESS(ss)BEGINCASE ss ISWHEN ”00” => y〈=a;WHEN "01" =〉 y〈=b;WHEN ”10” =〉 y<=c;WHEN "11" =〉 y〈=d;WHEN OTHERS =〉 NULL;END CASE;END PROCESS;END ARCHITECTURE hf1;图1。
4选1电路图图2. 4选1波形仿真图二.三位触发器VHDL语言设计三位触发器设计原代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164。
ALL; ENTITY DFF3 ISPORT( D,CLK : IN STD_LOGIC;Q0,Q1,Q2: OUT STD_LOGIC);END DFF3;ARCHITECTURE bhv OF DFF3 ISSIGNAL Q00,Q11,Q22 : STD_LOGIC; BEGINPROCESS(CLK,Q00,Q11,Q22)BEGINIF CLK'EVENT AND CLK=’1'THEN Q00<=D;Q11<=Q00;Q22〈=Q11;END IF;END PROCESS;Q0〈=Q00;Q1〈=Q11;Q2<=Q22;END bhv;4选1多路选择器VHDL语言设计图3。
四选一数据选择器11微电子黄跃1117426021【实验目的】1.四选一数据选择器,2.学习Verilog HDL文本文件进行逻辑设计输入;3.学习设计仿真工具modelsim的使用方法;【实验内容】1. 实现四选一数据选择器的“Verilog ”语言设计。
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。
A1 A0 D Y0 0 D00 1 D11 0 D2 1 1 D3 D0 D1 D2 D3图一4选1数据选择器的元件符号由真值表写出输出逻辑表达式 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) begin case ({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; endcase end图 二 4选1数据选择器原理图Endmodule测试程序代码如下: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型,通过这个例子我明白了书上所说的有时往往是一个比较笼统的,而更多的需要我们自己去实践、探索、勤思考,只有这样我们才能把书本上的知识转化为属于我们自己的知识,才能在学习的道路上走的更远!。
四选一多路选择器三种方法四选一多路选择器三种方法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:MUX41 case({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、有利于仿真器的仿真。
4选1数据选择器
4选1数据选择器的功能是从4个相互独立的数据输入端D0-D3中选出一个来送至输出端,因为2位二进制代码就可表示4个地址,所以它具有2个地址输入端A0和A1。
还有一个附加控制端S ,具有使能作用,当S=1是才正常执行数据选择功能,否则输出总为0。
输出端Y 的逻辑表达式为: Y=(013012011010A A D A A D A A D A A D +++)·S
使用LABVIEW 实现4选1数据选择器,具体步骤如下:
1、新建“4选1数据选择器.vi ”。
2、在前面板上新建两个以布尔型控件为元素的簇,分别用来表示地址输入变量A0-A1和数据输入变量D0-D3,另外再添加一个布尔型输入控件作为“控制端S ”,以及一个布尔型显示控件作为“输出Y ”。
3、在框图中添加复合运算函数,再按照前面推导出的逻辑表达式进行连线,最终输出结果送给变量Y ,最终程序前面板和框图如图1所示。
在该图中所示的前面板输入状态下,程序将从指定地址A1A0=11处取出数据 端D3送给输入端Y 。
同理,也可以使用地址A1A0=00取出D0,地址A1A0=01取出D1,地址A1A0=10取出D2。
图1“4选1数据选择器.vi”的前面板和框图。