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%,文件成功加载完成。
五、实验步骤
四选一数据选择器课程设计
四选一数据选择器课程设计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Ⅱ软件具有开放核的特点,允许设计人员添加自己认为有价值的宏函数。
EDA技术与应用实践学习内容(数据选择器设计练习)
技能点四(数据选择器设计练习)数据选择器可以从多组数据来源中选取一组送入目的地。
它的应用范围相当广泛,从组合逻辑的执行到数据路径的选择,经常可以看到它的踪影。
另外在如时钟、计数定时器等的输出显示电路中都可以利用多路选择器设计扫描电路来分别驱动输出装置(通常为七段数码显示管,点矩阵或液晶面板)以降低功率的消耗。
有时也希望把两组没有必要同时观察的数据,共享一组显示电路以降低成本。
数据选择器的结构是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所示。
基本触发器,四选一数据选择器
3.逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式和信号的连接关系。逻辑综合软件会生成.edf(edif)的EDA工业标准文件。
4.布局布线:将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放到PLD/FPGA内
用拨码开关作四位数据及两位控制端的输入,LED作输出,通过拨码开关组成控制输入端s1和s0不同组合,观察LED与数据输入端a,b,c,d的关系,验证4选一数据选择器设计的正确性。
2.基本触发器
先按键选择一种触发器(按键0--2分别代表D,JK,T触发器),再拨动拨码开关(SW0为D触发器输入,SW1,SW2为JK触发器输入,SW3为T触发器输入),观察验证小LED上显示的结果。
1.2 设计的基本内容
本设计主要是利用超高速硬件描述语言VHDL对四选一数据选择器和基本触发器电路进行编程实现。用原理图输入法或VHDL文本输入法设计4选1数据选择器基本触发器电路,建立4选1数据选择器和基本触发器的实验模式。通过电路仿真和硬件验证,进一步了解4选1数据选择器和基本触发器的功能。
1.四选一数据选择器
2.基本触发器的设计
基本触发器器可由VHDL程序来实现,下面是基本触发器的一部分VHDL代码:
process(clk,key)
BEGIN
if (key="111") then cnt0<=0;
2 EDA、VHDL简介
2.1 EDA技术
20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力地发展和社会信息化程度地提高,同时也使现代电子产品性能进一步地提高,产品更新换代的节奏也越来越快。EDA技术是伴随着计算机、集成电路、电子系统的设可阶计发展起来的。回顾近30年电子设计技术的发展历程,将EDA技术由浅到深分为CAD阶段、CAE阶段、ESDA段这3个阶段:(1) CAD阶段。20世纪70年代,随着中小规模集成电路的开发应用,传统的手工制图设计印刷电路板和集成电路的方法已无法满足设计精度和效率的要求,因此工程师们开始进行二维平面图形的计算机辅助设计,以便解脱繁杂、机械的版图设计工作,这就产生了第1代EDA工具— CAD(计算机辅助设计)。这是EDA发展的初级阶段,其主要特征是利用计算机辅助进行电路原理图编辑,PCB布同布线。它可以减少设计人员的繁琐重复劳动,但自动化程度低,需要人工干预整个设计过程。这类专用软件大多以微机为工作平台,易于学用,设计中小规模电子系统可靠有效,现仍有很多这类专用软件被广泛应用于工程设计。(2) CAE阶段。20世纪80年代,为适应电子产品在规模和制作上的需要,应运出现了以计算机仿真和自动布线为核心技术的第2代EDA技术,即CAE计算机辅助工程设计阶段。这一阶段的主要特征是以逻辑摸拟、定时分析、故障仿真、自动布局布线为核心,重点解决电路设计的功能检测等问题,使设计能在产品制作之前预知产品的功能与性能,已经具备了自动布局布线、电路的逻辑仿真、电路分析和测试等功能,其作用已不仅仅是辅助设计,而且可以代替人进行某种思维。与CAD相比,CAE除了纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,从而实现工程设计。(3) ESDA阶段。20世纪90年代,尽管CAD/CAE技术取得了巨大的成功,但并没有把人从繁重的设计工作中彻底解放出来。在整个设计过程中,自动化和智能化程度还不高,各种EDA软件界面千差万别,学习使用比较困难,并且互不兼容,直接影响到设计环节间的衔接。基于以上不足,EDA技术继续发展,进人了以支持高级语言描述、可进行系统级仿真和综合技术为特征的第3代EDA技术—ESDA电子系统设计自动化阶段。这一阶段采用一种新的设计概念自顶而下(Top - Down)的设计程式和并行工程(Concurrent Engineering)的设计方法,设计者的精力主要集中在所要电子产品的准确定义上,EDA系统去完成电子产品的系统级至物理级的设计。
4选1多路选择器VHDL语言设计
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。
用If语句实现简单选择结构
if _a_<_b_ then t_=_a_: _a_=_b_: _b_=_t
end if
VB程序代码中一行可 以写多个语句,语句 间用冒号隔开。
单分支结构
选择 结构
双分支结构
嵌套分支结构
(本节课的重点)
单分支结构
If 条件 Then 语句A
End If
双分支结构
If 条件 Then 语句A
Else 语句B
结构化程序设计核心
三种基本的控制结构: –顺序结构 –分支结构 –循环结构
单分支结构
选择 结构
双分支结构
嵌套分支结构
(本节课的重点)
单分支结构
If 条件 Then 语句A
End If
双分支结构
If 条件 Then 语句A
Else 语句B
End If
选择结构与选择语句
if 条件 then 语句A
if _a_<_0_ then
a<0
_a_=_-_a
end if
print a
Print 意为打印,是输出 语句。
例2:从键盘分别输入两个不相等的数到变量a、b ,输出其中较大的数。
if _a_>_b_ then
_p_r_in_t a
a>b
else
_p_r_in大小,将 大数放在a中,小数放在b中,然后输出a,b
End If
end if
If和end if 要成对出现
if 条件 then 语句A
else 语句B
end if
例1:输入一个数到变量a,输出它的绝对值 (不用绝对值函数)
分析问题:
非负数〔正数和0〕的绝对值是它本身,负数的 绝对值是它的相反数。
四选一数据选择器实验报告
四选一数据选择器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选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”的前面板和框图。
- 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;