2选1数据选择器的VHDL描述
2选1数据选择器的VHDL描述
ENTITY mux21a IS
PORT( a, b : IN BIT ;
s : IN BIT;
y : OUT BIT ) ;
END ENTITY mux21a ;
ARCHITECTURE one OF mux21a IS
BEGIN
y <= a WHEN s = '0'
ELSE b ;
END ARCHITECTURE one ;
译码器的设计
architecture dec_behave of e1 is
signal sel : std_logic_vector( 0 to 3) ;
begin
sel(0) <= en ; sel(1) <= a(0) ; sel(2) <= a(1) ; sel(3) <= a(2) ;
with sel select
y <= "00000001" when "1000",
"00000010" when "1001",
"00000100" when "1010",
"00001000" when "1011",
"00010000" when "1100",
"00100000" when "1101",
"01000000" when "1110",
"10000000" when "1111",
"00000000" when others ;
end dec_behave ;
8-3优先编码器
library IEEE; ……;
entity encoder83 is
port (ind: in std_logic_vector(7 downto 0);
outd: out std_logic_vector(2 downto 0));
end ;
architecture behave of encoder83 is
begin
process (ind)
begin
if ind (7) = ‘1' then outd<= "111";
elsif ind (6) = ‘1' then outd<= "110";
elsif ind (5) = ‘1' then outd<= "101"; elsif ind (4) = ‘1' then outd<= "100"; elsif ind (3 )= ‘1' then outd<= "011"; elsif ind (2) = ‘1' then outd<= "010"; elsif ind (1) = ‘1' then outd<= "001"; elsif ind (0) = ‘1' then outd<= "000"; else outd<= "000";
end if;
end process; end behave;。
EDA技术
1. 5、EDA软件工作平台 目前支持EDA技术软件工作平台非常丰富, 归类后一般有: 在模拟电路设计中,目前最好的EDA软件 应属于EWB(Elctrinic Work bench),具有界 面直观,操作方便、灵活,采用图形输入方式 (而不是文本输入方式)输入和创建电路。 在数字电路设计中, EDA软件的种类比较多 ,不同的器件制造商推出不同的EDA软件。
通往 I/O 模块
乘 积 项 选 择 矩 阵
时钟
清零 共 享
清零 选择
逻辑阵列
逻 辑 扩 展 项 通往 PIA 18
2)基于查找表的结构模块
• 一个N输入查找表 (LUT,Look Up Table)可以 实现N个输入变量的任何逻辑功能,如 N输入 “与”、 N输入“异或”等。 • 输入多于N个的函数、方程必须分开用几个查 找表( LUT)实现
波形输入
Synopsys, ViewLogic, Mentor Graphi 等厂商的EDIF文 .xnf
文本 文件
.gdf 图形 文件
.wdf
.tdf
.vhd
.sch 图形 文件
.edf 文本 文件
图形输入
波形 文件
文本 文本 文件 文件
Xilinx MAX+PLUS II 自身产生 从其他 EDA 工具输入
9
适配器功能是将由综合器产生的网表 文件配置于定的目标器件中,产生最终的 下载文件,如:JEDLC格式的文件。适配 所选定的目标器件(FPGA/CPLD芯片) 必须属于原综合指定的目标器件系列。适 配器则需由FPGA/CPLD供应商自己提供, 因为适配器的适配对象直接与器件结构相 对应。
10
FPGA/CPLD 开发流程图
EDA技术与应用的二选一选择器
EDA 技术与应用的二选一选择器学院名称: 东方学院专 业: 电子信息工程班 级:学 号:姓 名:指导教师姓名:指导教师职称:2007年 4 月24日JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY 本科课程设计(论文)二选一选择器一.设计目的1.学习VHDL编程;2.进一步熟悉实验箱电路;二.设计指标及功能要求设计指标:(1)对所设计的小系统功能正确分析;(2)基于VHDL语言描述系统的功能;(3)在QUARTUSⅡ环境中编译通过;(4)仿真通过,并得到正确的波形;(5)给出相应设计报告;功能要求:1.用VHDL语言设计可控加减计数器;2.至少两层电路,底层有三种元件;3.使得其执行可控加,减记数;三.实验步骤1.建立Light目录,用于存放本实验所建立的文本2.点击“File New”,在出现的对话框中,选择“VHDL File”进入文本编辑器。
3.输入VHDL语言源文件。
4.点“Save as”,保存该源文件。
5.进行编译,点“start compilation”,若语句有错会有提示,修改后重新编译直到无错误。
6.点“File New”,选择“Vector Waveform File”,建立仿真输入文件.7.点“End time”,输入终止时间(表示波形长度).点“light”将所有信号选中或部分选中。
点“start simulation”.运行波形,直至正确。
四、电路工作原理首先,用异或门控制输入端,加一个脉冲信号。
在其后方分别加上加法计数器和减法计数器:来一个脉冲,当异或门输出为0时,减法计数器开始工作,当输出为1时,加法计数器工作。
这样,利用给异或门加不同的信号来控制加减计数器。
五.各子模块设计与调试过程library ieee;use ieee.std_logic_1164.all;entity ora isport(a:in std_logic;b:out std_logic);end entity;architecture one of ora isbeginb<=not a;end architecture;library ieee;use ieee.std_logic_1164.all;entity noxa isport(a,b:in std_logic;c:out std_logic);end entity;architecture one1 of noxa isbeginc <= a xor b;end architecture;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10a isport(CP,EN:in std_logic;q:out std_logic_vector(3 downto 0)); end cnt10a;architecture one of cnt10a isbeginprocess(CP,EN)variable q1:std_logic_vector(3 downto 0);beginif(CP'event and CP='1') thenif EN='1' thenif(q1<9) then q1:=q1+1;else q1:=(others=>'0');end if;end if;end if;q<=q1;end process;end one;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity cnt10b isport(CP,EN:in std_logic;q: out std_logic_vector(3 downto 0)); end cnt10b;architecture one of cnt10b isbeginprocess(CP,EN)variable q1:std_logic_vector(3 downto 0);beginif(CP'event and CP='1') thenif EN='1' thenif(q1=0) then q1:="1001";else q1:=q1-1;end if;end if;end if;q<=q1;end process;end;library ieee;use ieee.std_logic_1164.all;entity kekong isport(a1,b1,cp1:in std_logic;cq1,cq2:out std_logic_vector(3 downto 0)); end entity;architecture wowo of kekong iscomponent noxa isport(a,b:in std_logic;c:out std_logic);end component;component ora isport(a:in std_logic;b:out std_logic);end component;component cnt10a isport(CP,EN:in std_logic;q:out std_logic_vector(3 downto 0)); end component;component cnt10b isport(CP,EN:in std_logic;q: out std_logic_vector(3 downto 0)); end component;signal k,j:std_logic;beginu1:noxa port map(a=>a1,b=>b1,c=>k);u2:ora port map(a=>k,b=>j);u3:cnt10a port map(EN=>k,CP=>CP1,Q=>cq1);u4:cnt10b port map(EN=>j,CP=>CP1,q=>cq2); end architecture wowo;六、波形调试:七、感想:通过对EDA程序的使用,我发现该程序的实用性!其次,对数字电路的知识也不能遗忘,还要正确使用VHDL语言,通过调试能正确的改错!并且对调试后的波形进行正确的分析。
Verilog入门训练3—二选一数据选择器
得到:F=AS + BS
A S
0
&
0
0
F
&
0 0
B
0
3. 使用 Quartus 8.0 建立项目, 建立过程和注意事项见前两周的实验指导, 选择器件时随便 指定一个。这里的项目名称为 mux21。 (切记项目保存路径和实验过程中新建的文件保 存路径都不要出现中文) 4. 项目建好后,新建 Verilog 选择“File”——“New”——“Verilog HDL file” 。输入以下代码
仿真成功后,回到波形文件,会弹出提示如下:
选择“是”来更新仿真结果,如下图所示:
根据仿真结果分析,例如在红线所在位置,S=1,因此 F 应该等于 B。这时候 B 的值为 0,因 此 F=0,结果正确。也可以从其他任意位置分析,看电路是否符合要求。 7. 指定引脚 点击“File”——“Save Project” ,然后关闭 quartus 8.0。打开 Quartus 11.0,选择“Open Project” ,找到上面保存的项目。项目打开后,首先更换器件,方法如下:点击项目中 器件(刚才随便指定的) ,右键,选择“Device”
在出现的编辑界面左侧右键,选择如下:
在“Insert Node or Bus”里选择“Node Finder…”
在弹出来的 “Node Finder” 中 ,首先 在“Filter” 中 选择 “Pins: Unassigned” , 然 后点 击“list” ,
在“Nodes Found”中会列出所有的引脚,第三步选择全部引脚(鼠标拉) ,点击“>>” , 最 后点击“OK”即可。在回到的“Insert Node or Bus”界面点击“OK” 。
2选1选择器的VHDL设计课件
3.1 多路①可以使用26个英文字母,数字0-9以及下划线“_”,且 只能以英文字母开头;
②不区分大小写;最长不超过64个字符;
③必须是单一下划线,且下划线前后都必须有英文字母 或数字;
6、端口定义语句port和端口模式 端口模式
IN 输入端口,定义的通道为单向只读模 OUT 式输出端口,定义的通道为单向输出模 INOUT 式 定义的通道确定为输入输出双向端口 BUFFER 缓冲端口,其功能与INOUT类似
3、界符 标点符号“;”表示VHDL中语句的结束;
3.1 多路选择器的VHDL描述
4、实体和结构体
实体和结构体是VHDL程序的两个基本组成部分;其中 实体主要用于定义电路或系统的外部端口;结构体用于定义 内部逻辑功能或电路结构。
ENTITY e_name IS PORT ( p_name : port_m
-- 注意,赋值条件的数据类型必须是boolean
3.1 多路选择器的VHDL描述
思考 ❖还有没有其它方法实现二选一? ❖n选一的多路选择器怎么设计?
3.1 多路选择器的VHDL描述
9、赋值符号<=
信号赋值符号“<=”,表示将符号右端的值赋值给左端的 信号; 10、关系运算符=
等号“=”没有赋值的含义,也不是相等的意思,而是 关系运算符,只是一种数据比较符号,其结果只有两种情况, 要么为真true,条件成立;要么为假false,条件不成立。 表达式 WHEN 赋值条件 ELSE
END ARCHITECTURE one ;
3.1 多路选择器的VHDL描述
3.1 多路选择器的VHDL描述
entity 实体
architecture 结构体
实体 mux21a1
VHDL复习题
一、选择题( A )1.一个项目的输入输出端口是定义在:A. 实体中B. 结构体中C. 任何位置D. 进程体( B)2.描述项目具有逻辑功能的是:A. 实体B. 结构体C. 配置D. 进程( A )3.关键字ARCHITECTURE定义的是:A. 结构体B. 进程C. 实体D. 配置( D )4.VHDL语言中变量定义的位置是:A. 实体中中任何位置B. 实体中特定位置C. 结构体中任何位置D. 结构体中特定位置( D )5.VHDL语言中信号定义的位置是:A. 实体中任何位置B. 实体中特定位置C. 结构体中任何位置D. 结构体中特定位置( B )6.变量是局部量可以写在:A. 实体中B. 进程中C. 线粒体D. 种子体中( A )7.变量和信号的描述正确的是:A. 变量赋值号是:=B. 信号赋值号是:=C. 变量赋值号是<=D. 二者没有区别( B )8. 变量和信号的描述正确的是:A. 变量可以带出进程B. 信号可以带出进程C. 信号不能带出进程D. 二者没有区别( )9.对于信号和变量的说法,哪一个是不正确的:A. 信号用于作为进程中局部数据存储单元B. 变量的赋值是立即完成的C. 信号在整个结构体内的任何地方都能适用D. 变量和信号的赋值符号不一样( A )10.下列关于变量的说法正确的是:A.变量是一个局部量,它只能在进程和子程序中使用B.B. 变量的赋值不是立即发生的,它需要有一个δ延时C. 在进程的敏感信号表中,既可以使用信号,也可以使用变量D. 变量赋值的一般表达式为:目标变量名<= 表达式( C )11.可以不必声明而直接引用的数据类型是:A. STD_LOGICB. STD_LOGIC_VECTORC. BITD. 前面三个答案都是错误的( C )12.STD_LOGIG_1164中定义高阻的字符是:A. XB. xC. zD. Z( A )13.STD_LOGIG_1164中字符H定义的是:A. 弱信号1B. 弱信号0C. 没有这个定义D. 初始值( B )14.使用STD_LOGIG_1164中的数据类型时:A. 可以直接调用B. 必须在库和包集合中声明C. 必须在实体中声明D. 必须在结构体中声明( B )15.关于转化函数说法正确的是:A. 任何数据类型都可以通过转化函数相互转化B. 只有特定类型的数据类型可以转化C. 任何数据类型都不能转化D. 前面说法都是错误的( C )16.VHDL运算符优先级说法正确的是:A. 逻辑运算的优先级最高B. 关系运算的优先级最高C. 逻辑运算的优先级最低D. 关系运算的优先级最低( D )17.VHDL运算符优先级说法正确的是:A. NOT的优先级最高B. AND和NOT属于同一个优先级C. NOT的优先级最低D. 前面的说法都是错误的( D )18.VHDL运算符优先级说法正确的是:A. 括号不能改变优先级B. 不能使用括号C. 括号的优先级最低D. 括号可以改变优先级( B )19.如果a=1,b=0,则逻辑表达式(a AND b)OR(NOT b AND a)的值是:A. 0B. 1C. 2D. 不确定( B )20.正确给变量X赋值的语句是:A. X<=A+B;B. X:=A+b;C. X=A+B;D. 前面的都不正确( )21.VHDL文本编辑中编译时出现如下的报错信息,其错误原因是:Error: VHDL syntax error: choice value length must match selector expression value lengthA. 表达式宽度不匹配B. 错将设计文件存入了根目录,并将其设定成工程C. 设计文件的文件名与实体名不一致D. 程序中缺少关键词( D )22.在VHDL语言中,下列对时钟边沿检测描述中,错误的是:A. if clk’event and clk = ‘1’ thenB. if falling_edge(clk) thenC. if clk’event and clk = ‘0’ thenD. if clk’stable and not clk = ‘1’ then( D )23.在VHDL中,可以用以下哪条语句表示检测clock下降沿:A. clock’ eventB. clock’ event and clock=’1’(上升沿)C. clock=’0’D. clock’ event and clock=’0’( D )24.VHDL语言共支持四种常用库,其中哪种库是用户的VHDL设计现行工作库:A. IEEE库B. VITAL库C. STD库D. WORK工作库( A )25.VHDL常用的库是:A. IEEEB. STDC. WORKD. PACKAGE( B )26.下列语句中,不属于并行语句的是:A. 进程语句B. CASE语句C. 元件例化语句D. WHEN…ELSE…语句( D )27.下面哪一个可以用作VHDL中的合法的实体名:A. ORB. V ARIABLEC. SIGNALD. OUT1( B )28.下列关于CASE语句的说法不正确的是:A. 条件句中的选择值或标识符所代表的值必须在表达式的取值范围内B. CASE语句中必须要有WHEN OTHERS=>NULLC. CASE语句中的选择值只能出现一次,且不允许有相同的选择值的条件语句出现D. CASE语句执行必须选中,且只能选中所列条件语句中的一条( D )29.VHDL中,为目标变量赋值符号是:A. =:B. =C. <=D. :=( B )30.VHDL语言是一种结构化设计语言,一个设计实体(电路模块)包括实体与结构体两部分,结构体描述:A. 器件外部特性B. 器件的内部功能C. 器件的综合约束D. 器件外部特性与内部功能。
VHDL实验报告一2选1多路选择器
VHDL实验报告一2选1多路选择器实验一实验目的:熟悉quartus的vhdl文本设计流程全过程,学习简单的组合电路的设计,多层次的电路设计,仿真和硬件测试二、实验内容内容(一)用vhdl语言设计2选1多路选择器参考例3-1程序设计如下:library ieee;use ieee.std_logic_1164.all;entity mux21a isport (a,b,s:in bit;y: out bit);end entity mux21a;architecture one of mux21a isbeginy<=a when s='0' else b;end architecture one全程编译后软件提示0错误,3警告,可以继续下面仿真操作。
程序分析:这是一个2选1多路选择器,a和b分别为两个数字输入端的端口名,s为通道选择控制信号输入端的端口名,y为输出端的端口名。
时序仿真及分析:时序仿真输入图:时序仿真输出图:时序分析:由上面两图可以得知:当s=0时,y口输出a,当s=1时,y口输出b下载和硬件测试:引脚锁定图:程序下载完成后,选择实验电路模式5,通过短路帽选择clock0接256Hz 信号,clock2接8Hz信号。
通过键一控制s,当键一进行切换时,明显能听到扬声器发出两种不同音调的声音。
实验内容(二)双二选一多路选择器设计程序设计:library ieee;use ieee.std_logic_1164.all;entity mux21a isport (a,b,s:in bit;y: out bit);end entity mux21a;architecture one of mux21a isbeginy<=a when s='0' else b;end architecture one;entity muxk isport (a1,a2,a3,s0,s1:in bit;outy:out bit);end entity muxk;architecture bhv of muxk iscomponent mux21aport (a,b,s:in bit;y:out bit);end component;signal tmp: bit;beginu1:mux21a port map(a=>a2,b=>a3,s=>s0,y=>tmp);u2:mux21a port map(a=>a1,b=>tmp,s=>s1,y=>outy);end architecture bhv;全程编译后软件提示0错误,2警告程序分析:这是一个双2选1多路选择器,a1、a2和a3分别为两个数字输入端的端口名,s0、s1为通道选择控制信号输入端的端口名,outy为输出端的端口名。
组合逻辑VHDL设计——数据选择器 实验报告
实验名称:组合逻辑VHDL设计——数据选择器班级: 09电气2Z 学号: 09312213 姓名:钱雷一、4选1数据选择器的VHDL设计(低电使能端)1.实体框图2.程序设计①正确的程序library ieee;use ieee.std_logic_1164.all;entity mux41a isport(D3,D2,D1,D0,EN:in std_logic;A1,A0:in std_logic;y:out std_logic);end mux41a;architecture aaa of mux41a isbeginy<=D3 when A1='0' and A0='0' and EN='0' elseD2 when A1='0' and A0='1' and EN='0' elseD1 when A1='1' and A0='0' and EN='0' elseD0 when A1='1' and A0='1' and EN='0'else 'Z';end architecture aaa;3.仿真波形图4.仿真波形分析D0-D3是数据输入端,EN为使能端,低电平有效,S(A1和A0)是控制输入端,Y是数据输出端。
当A1、A0=‘11’时,D0数据被选中,输出Y=D0;当A1、A0=‘10’时,D1数据被选中,输出Y=D1,当A1、A0=‘01’时,D2数据被选中,输出Y=D2,当A1、A0=‘00’时,D3数据被选中,输出Y=D3。
二、8选1数据选择器的VHDL设计(低电使能端)1.实体框图2.程序设计①正确的程序library ieee;use ieee.std_logic_1164.all;entity mux81a isport(A0,A1,A2,D0,D1,D2,D3,D4,D5,D6,D7,EN:in std_logic;y:out std_logic);end mux81a;architecture bbb of mux81a issignal Q:std_logic_vector (2 downto 0);beginQ<=A2&A1&A0;y<=D0 when Q="000" and EN='0' elseD1 when Q="001" and EN='0' elseD2 when Q="010" and EN='0' elseD3 when Q="011" and EN='0' elseD4 when Q="100" and EN='0' elseD5 when Q="101" and EN='0' elseD6 when Q="110" and EN='0' elseD7 when Q="111" and EN='0'else 'Z';end architecture bbb;3.仿真波形图4.仿真波形分析D0-D7是数据输入端,EN为使能端,低电平有效,A2,A1,A0是控制输入端,Y是数据输出端。
2选1多路选择器的VHDL描述
一、实验目的
1.学会使用VHDL语言并熟悉;
用VHDL语言完成2选1多路选择器设计和8位硬件加法器VHDL设计;
2.
二.实验设备:
名称规格数量
计算机586及以上1台
Quartus II软件 6.0以上
三、实验内容及步骤
1.利用VHDL语言完成2选1多路选择器的设计
1).打开Quartus II新建打开VHDL界面,输入程序,并保存名为mux21a.vhdl,程序如图3-1:
图3-1VHDL语言描述
在窗口中点击compile,编译成功如图3-2:
图3-2
2). 编译成功后,新建波形文件。
将上述描述语言进行波形仿真。
编译成功如图3-3,仿真波形如下图3-4
图3-3
图3-4仿真波形图
由此可得到结构图,如图3-5
图3-5
8位硬件加法器的VHDL设计
1.如同2选1多路选择器的设计类似,输入VHDL描述语言,保存到adder8b 工程中。
描述语言如下图3-6
图3-6
2.编译成功后,新建波形文件。
将上述描述语言进行波形仿真。
仿真波形如下图3-7
图3-7
通过对波形的分析可知,达到设计目的。
四、实验小结
1.多路选择器是典型的组合电路,应该熟悉它们。
2.通过此次实验,可知主要考察通过VHDL语言编译器件的能力,因此对语言的描述一定要到位。
3.通过本次实验对VHDL描述语言的语法又有了更进一步的认识和熟悉,从整体上把握VHDL程序的基本结构和设计特点,为以后编辑大型器件奠定了厚实的基础。
2选1和4选1选择器VHDL设计
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX41A IS PORT(a,b,c,d,s0,s1:IN STD_LOGIC;
y:OUT STD_LOGIC); END ENTITY MUX41A ; ARCHITECTURE BHV OF MUX41A IS SIGNAL S:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN S <=S1 & S0; PROCESS(S1,S0) --敏感信号表中可以放s1、s0,也可直接放s,如(s) BEGIN CASE S IS WHEN "00" => y<=a; WHEN "01" => y<=b; WHEN "10" => y<=c; WHEN "11" => y<=d; WHEN OTHERS =>NULL; END CASE; END PROCESS; END BHV;
3.3 4选1多路选择器及其VHDL描述
3.1 多路选择器的VHDL描述
相关语法 1.IEEE库和1164程序包
在VHDL中也像很多高级语言一样,把常用的一些数据 类型,数据对象等事先定义好放在库和程序包中,供设计者 直接调用而不用定义。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; 注意:一个典型的VHDL程序是由库和程序包,实体和结构 体三部分构成。
mux21a2
a
y
b
ቤተ መጻሕፍቲ ባይዱ
s
3.1 多路选择器的VHDL描述
相关语法
1.信号signal
多路选择器的VHDL描述
多路选择器的VHDL描述
1.2 相关语句结构和语法说明 11. 进程语句和顺序语句
在一个结构体中可以包含任意个进程语句结构,所有的进程语 句都是并行语句,而由任一进程PROCESS引导的语句(包含在其 中的语句)结构属于顺序语句。
多路选择器的VHDL描述
1.1 2选1多路选择器的VHDL描述
【例4-2】 ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a;
ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT;
2. 实体名
3. 端口语句和端口信号名
多路选择器的VHDL描述
1.2 相关语句结构和语法说明 4. 端口模式
IN 输入端口,定义的通道为单向只读模式 OUT 输出端口,定义的通道为单向输出模式 INOUT 定义的通道确定为输入输出双向端口 BUFFER 缓冲端口,其功能与INOUT类似
多路选择器的VHDL描述
PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT );
END ENTITY mux21a; ARCHITECTURE one OF mux21a IS
BEGIN y <= a WHEN s = '0' ELSE b ;
END ARCHITECTURE one ;
12. 文件取名和存盘
EDA 技术实用教程
END ENTITY mux21a; ARCHITECTURE one OF mux21a IS
