EDA三八译码器程序
EDA三八译码器程序

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clk_div isport(clk:in std_logic;clk_div:out std_logic);end clk_div;architecture rt1 of clk_div issignal q_temp:integer range 0 to 5999999;beginprocess(clk)beginif(clk'event and clk='1') thenif(q_temp=5999999) thenq_temp<=0;elseq_temp<=q_temp+1;end if;end if;end process;process(clk)beginif(clk'event and clk='1') thenif(q_temp=5999999) thenclk_div<='1';elseclk_div<='0';end if;end if;end process;end rt1;library ieee;use ieee.std_logic_1164.all;entity seg7 isport(q: in std_logic_vector(3 downto 0);segment: out std_logic_vector(0 to 7));end seg7;architecture rt1 of seg7 isbeginprocess(q)begincase q iswhen "0000"=> segment <="11000000";when "0001"=> segment <="11111001";when "0010"=> segment <="10100100";when "0011"=> segment <="10110000";when "0100"=> segment <="10011001";when "0101"=> segment <="10010010";when "0110"=> segment <="10000010";when "0111"=> segment <="11011000";when "1000"=> segment <="10000000";when "1001"=> segment <="10010000";when others=> segment <="XXXXXXXX";end case;end process;end rt1;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count3081 isport(enable:in std_logic;clk0:in std_logic;q1:out std_logic_vector(3 downto 0);q2:out std_logic_vector(3 downto 0);q3:out std_logic_vector(3 downto 0);q4:out std_logic_vector(3 downto 0));end count3081;architecture rt1 of count3081 issignal q1_temp,q2_temp,q3_temp,q4_temp:std_logic_vector(3 downto 0);beginprocess(clk0)beginif(clk0'event and clk0='1')thenif(enable='1')thenif(q4_temp="0011" and q3_temp="0000" and q2_temp="1000" and q1_temp="0001") thenq1_temp<="0000";q2_temp<="0000";q3_temp<="0000";q4_temp<="0000";elseif(q1_temp="1001")thenq1_temp<="0000";q2_temp<=q2_temp+1;elseq1_temp<=q1_temp+1;if(q2_temp="1001")thenq2_temp<="0000";q3_temp<=q3_temp+1;elseq2_temp<=q2_temp+1;if(q3_temp="1001")thenq3_temp<="0000";q4_temp<=q4_temp+1;elseq3_temp<=q3_temp+1;if(q4_temp="0011")thenq4_temp<="0000";end if;end if;end if;end if;end if;end if;end if;q1<=q1_temp;q2<=q2_temp;q3<=q3_temp;q4<=q4_temp;end process;end rt1;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ch30 isport(clk:in std_logic;enable:in std_logic;segment1:out std_logic_vector(0 to 7);segment2:out std_logic_vector(0 to 7);segment3:out std_logic_vector(0 to 7);segment4:out std_logic_vector(0 to 7));end ch30;architecture rt1 of ch30 iscomponent clk_divport(clk:in std_logic;clk_div:out std_logic);end component;component count3081port(enable:in std_logic;clk0:in std_logic;q1:out std_logic_vector(3 downto 0);q2:out std_logic_vector(3 downto 0);q3:out std_logic_vector(3 downto 0);q4:out std_logic_vector(3 downto 0));end component;component seg7port(q: in std_logic_vector(3 downto 0); segment: out std_logic_vector(0 to 7));end component;signal x:std_logic;signal q1:std_logic_vector(3 downto 0);signal q2:std_logic_vector(3 downto 0);signal q3:std_logic_vector(3 downto 0);signal q4:std_logic_vector(3 downto 0);beginU0:clk_div port map(clk,x);U1:count3081 port map(enable,x,q1,q2,q3,q4);U2:seg7 port map(q1,segment1);U3:seg7 port map(q2,segment2);U4:seg7 port map(q3,segment3);U5:seg7 port map(q4,segment4);end;。
EDA设计38译码器

班级:通信13-3班姓名:王亚飞学号:1306030318 指导教师:成绩:电子与信息工程学院信息与通信工程系摘要EDA技术是以微电子技术为物理层面,现代电子设计技术为灵魂,计算机软件技术为手段,最终形成集成电子系统或专用集成电路ASIC为目的的一门新兴技术。
而VHDL语言是硬件描述语言之一,其广泛应用性和结构的完整性使其成为硬件描述语言的代表。
随着社会经济和科技的发展,越来越多的电子产品涌如我们的日常生活当中,在日常生活中译码器起着不可忽视的作用。
本设计就是运用VHDL语言设计的3-8译码器。
3-8译码器电路的输入变量有三个即D0,D1,D2,输出变量有八个Y0-Y7,对输入变量D0,D1,D2译码,就能确定输出端Y0-Y7的输出端变为有效(低电平),从而达到译码目的。
关键词:EDA;3-8译码器1实验目的1、通过一个简单的3-8译码器的设计,让学生掌握组合逻辑电路的设计方法。
2、初步掌握VHDL语言的常用语句。
3、掌握VHDL语言的基本语句及文本输入的EDA设计方法。
2实验背景2.1 VHDL的简介VHDL语言是一种用于电路设计的高级语言。
它在80年代的后期出现。
最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。
但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为A I/IEEE的标准(IEEE STD 1076-1987)。
1993年更进一步修订,变得更加完备,成为A I/IEEE的A I/IEEE STD 1076-1993标准。
目前,大多数的CAD厂商出品的EDA软件都兼容了这种标准。
VHDL的英文全写是:VHSIC (Very High eed Integrated Circuit)Hardware Descriptiong Language.翻译成中文就是超高速集成电路硬件描述语言。
因此它的应用主要是应用在数字电路的设计中。
初识EDA--2三八译码器

2021/4/4
15
5-11 保存设计文件对话框
3、对设计文件进行编译
QUARTUSII编译器窗口包含了对设计文件处理的全过程。在 QUARTUSII软件中选择Tool>Compiler Tool菜单项,则出现 QUARTUSII的编译器窗口,如图5-12所示,图中标明了全编译过 程各个模块的功能。
2021/4/4
5-4 器件选择界面
6
首先在对话框的左上方的Family下拉菜单中选取Cyclone,在中 间右边的Speed grade下拉菜单中选取8,在左下方的Available devices框中选取EP1C6Q240C8 ,点击NEXT完成器件的选取, 进入EDA TOOL设定界面如图1-7所示。
2021/4/4
14
5-10 设计文件的输入
6)完成图形编辑的输入之后,需要保存设计文件或重新命名设计 文件。选择File>Save As…项,出现如图5-11所示对话框,选择 好文件保存目录,并在文件名栏输入设计文件名。如需要将设计文 件添加到当前工程中,则选择对话框下面的Add file to current project复选框,单击保存按钮即可保存文件。需要注意的是,在 整个设计文件保存的过程当中,都需要遵循设计输入法的一般规则。
一、实验目的
1、通过一个简单的3—8译码器的设计,掌握组合逻辑电路的设 计方法。
2、初步了解QUARTUSII原理图输入设计的全过程。 3、掌握组合逻辑电路的静态测试方法。
二、实验内容 在本实验中,用三个拨动开关来表示三八译码器的三个输入用八
个LED来表示三八译码器的八个输出。通过输入不同的值来观察输 入的结果与三八译码器的真值表是否一致。当开关闭合时其输出为 低电平,反之输出高电平。
3-8译码器设计

《EDA技术》课程实验报告学生姓名:张叶所在班级:通信1301指导教师:黄科老师记分及评价:一、实验名称实验4:3-8译码器的设计二、任务及要求【基本部分】1、在QuartusII平台上,采用文本输入设计方法,通过编写VHDL语言程序,完成3-8译码器的设计并进行时序仿真。
2、设计完成后生成一个元件,以供更高层次的设计调用。
3、实验箱上进行验证。
【发挥部分】设计4-8译码器,完成仿真并封装成一个元件;新建原理图,调用一片74161和所设计的4-8译码器,完成具有16种花样的循环LED灯控制器的设计,并在实验箱上进行验证。
三、实验程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity ky isport(A :in std_logic_vector(2 downto 0);Y :out std_logic_vector(7 downto 0));end entity ky;architecture ky_a of ky isbeginprocess(A)begincase A iswhen "000" => Y<="11111110";when "001" => Y<="11111101";when "010" => Y<="11111011";when "011" => Y<="11110111";when "100" => Y<="11101111";when "101" => Y<="11011111";when "110" => Y<="10111111";when others => Y<="01111111"; end case;end process;end architecture ky_a;四、仿真及结果分析仿真结果五、硬件验证1、引脚锁定情况表:引脚情况锁定表六、小结在本次实验中,老师教我们用QuartusII软件设计并仿真了3-8译码器。
EDA技术-VHDL-3.7译码器a3-8

3.7 3-8译码器程序设计与仿真实验1 实验目的(1) 掌握3-8译码器的工作原理。
(2) 学会用VHDL语言进行逻辑电路设计。
2 实验原理3-8译码器是把一组三位二进制代码译成对应的八个输出信号,其三位二进制译码器状态如表3.7.1所示。
表3.7.1 三位二进制译码器状态表3 实验内容(1) 用VHDL语言编写3-8译码器源程序。
(2) 将源程序进行综合、优化及功能仿真。
(3)把适配后生成的下载,通过编程器向FPGA下载,进行硬件调试和验证。
4 实验预习与思考(1) 熟悉3-8译码器的工作原理。
(2) 若下载器件的显示电路是共阴极的,编程时译码输出的二进制代码怎样改变。
5 VHDL仿真实验(1)为此工程新建一个文件夹。
启动QuartusⅡ软件工作平台。
新建工程设计文件名为decoder.vhd。
在新建的VHDL模型窗口下编写的源程序如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity decoder is --实体说明Port ( reset : in std_logic;input : in std_logic_vector(2 downto 0);output : out std_logic_vector(7 downto 0));end decoder;architecture Behavioral of decoder is --结构体beginprocess(reset,input) --进程beginif ( reset = '1') thenoutput <= "00000000";elsecase input iswhen "000" => output <= "00000001";when "001" => output <= "00000010";when "010" => output <= "00000100";when "011" => output <= "00001000";when "100" => output <= "00010000";when "101" => output <= "00100000";when "110" => output <= "01000000";when "111" => output <= "10000000";when others => output<= "00000000";end case;end if;end process;end Behavioral;(2) 创建工程及全程编译完成源代码输入后即可创建工程。
eda第二次实验 38译码器

实验二组合逻辑电路的VHDL模型实验一、实验目的1、掌握组合逻辑和时序逻辑电路的设计方法。
2、掌握组合逻辑电路的静态测试方法。
加深FPGA设计的过程,并比较原理图输入和文本输入的优劣。
3、了解通用同步计数器,异步计数器的使用方法。
4、理解积分分频器的原理。
二、硬件要求拨位开关、FPGA主芯片EP1K30QC208、LED显示模块三、实验原理译码器是输入数码和输出数码之间的对应关系,也就是说,“输入码和输出码之间的对应表”这应该算是设计译码器的必须条件。
译码器常用来做码和码之间的转换器,也常被用于地址总线或用作电路的控制线。
例如下面为常见的3×8译码器的真值表:实验中可根据需要,为3×8译码器加入使能控制脚。
一般的分频器可获得的分频频率种类分布不均匀,积分分频,能比较好的解决这个问题。
1、分频结果=来源频率×N/(2ⁿ-1);2、频率波形不均匀。
四、实验内容及步骤本实验内容是完成38译码器和5/8分频器的设计,然后将3×8译码器的结果在实验箱上实现,5/8分频器则能正确仿真、显示,实验步骤如下:1、编写3×8译码器的VHDL代码。
2、用MaxPlusII对其进行编译仿真。
3、在仿真确定无误后,选择芯片ACEX1K EP1K30QC208。
4、给芯片进行管脚绑定,在此进行编译。
5、根据自己绑定的管脚,在实验箱上对键盘接口、显示接口和FPGA之间进行正确连线。
6、给目标板下载代码,在开关输入键值,观看实验结果。
7、编写5/8分频器的VHDL代码。
8、用MaxPlusII对其进行编译仿真。
9、使用WaveForm进行波形仿真。
五、程序代码1. 38译码器library ieee;use ieee.std_logic_1164.all;entity a3toy8 isport (en:in std_logic;a:in std_logic_vector(2 downto 0);b:in std_logic_vector(2 downto 0);y:out std_logic_vector(7 downto 0);YM: out std_logic_vector(7 downto 0));end entity a3toy8;architecture a3y8 of a3toy8 issignal t:std_logic_vector(3 downto 0);signal v:std_logic_vector(3 downto 0);begint <= en & a(2 downto 0);process(t(3 downto 0))begincase t(3 downto 0) iswhen "1000" => Y(7 downto 0) <= "00000001";when "1001" => Y(7 downto 0) <= "00000010";when "1010" => Y(7 downto 0) <= "00000100";when "1011" => Y(7 downto 0) <= "00001000";when "1100" => Y(7 downto 0) <= "00010000";when "1101" => Y(7 downto 0) <= "00100000";when "1110" => Y(7 downto 0) <= "01000000";when "1111" => Y(7 downto 0) <= "10000000";when others => Y(7 downto 0) <= "00000000";end case;end process;v <= t;process(v(3 downto 0))begincase v(3 downto 0) isWHEN "1000" => YM(7 downto 0) <= "01100000";WHEN "1001" => YM(7 downto 0) <= "11011010";WHEN "1010" => YM(7 downto 0) <= "11110010";WHEN "1011" => YM(7 downto 0) <= "01100110";WHEN "1100" => YM(7 downto 0) <= "10110110";WHEN "1101" => YM(7 downto 0) <= "10111110";WHEN "1110" => YM(7 downto 0) <= "11100000";WHEN "1111" => YM(7 downto 0) <= "11111110";when others => YM(7 downto 0) <= "00000000";end case;end process;end architecture a3y8;本代码是通过控制拨动开关来控制led灯,并且在数码管上显示发亮的是第几盏led。
EDA实验—译码器设计

电子信息工程学系实验报告课程名称:EDA技术与实验实验项目名称:三八译码器设计实验时间:班级:通信091 姓名:Jxairy 学号:实验目的:1.熟悉ALTERA公司EDA设计工具软件max+plusⅡ。
2.掌握max+plusⅡ文本、原理图设计及其仿真。
实验环境:Windows 7、max+plusⅡ10等。
实验原理:(详见实验分析部分。
)实验内容:1.运用max+plusⅡ软件,设计三八译码器,掌握max+plusⅡ软件的文本设计流程。
2.运用max+plusⅡ软件,设计三八译码器,掌握max+plusⅡ软件的原理图设计流程。
3.了解和熟悉max+plusⅡ软件的菜单界面和命令功能。
实验过程:一、三八译码器文本设计:(1)新建文本:选择菜单File下的New,出现如图2.1所示的对话框,在框中选中“Text Editorfile”,按“OK”按钮,即选中了文本编辑方式。
(2)另存为Verilog编辑文件,如图2.2所示。
(3)在编辑窗口中输入程序。
图2.1 新建文本图2.2 另存为.V编辑文件(4)设置当前文本:在MAX+PLUS II中,在编译一个项目前,您必须确定一个设计文件作为您的当前项目。
请按下列步骤确定项目名:在File menu 菜单中选择Project Name项,将出现Project Name 对话框:在Files 框内,选择您的设计文件。
选择“OK”。
如图2.3所示。
图2.3 设置当前仿真的文本设计(5)打开编译器窗口:在MAX—plusⅡ菜单内选择Compiler 项,即出现如图2.4的编译器窗口。
图2.4 编译器窗口选择Start即可开始编译,MAX+PLUS II编译器将检查项目是否有错,并对项目进行逻辑综合,然后配置到一个Altera 器件中,同时将产生报告文件、编程文件和用于时间仿真用的输出文件。
(6)建立波形编辑文件:选择菜单File下的New选项,在出现的New对话框中选择“Waveform Editor File”,单击OK后将出现波形编辑器子窗口。
EDA3-8译码器的设计

《EDA技术》课程实验报告学生姓名:所在班级:电信1102指导教师:记分及评价:报告满分3分得分一、实验名称实验4:3-8译码器的设计二、任务及要求【基本部分】1、在QuartusII平台上,采用文本输入设计方法,通过编写VHDL语言程序,完成3-8译码器的设计并进行时序仿真。
2、设计完成后生成一个元件,以供更高层次的设计调用。
3、实验箱上进行验证。
【发挥部分】修改设计,完成3-6译码器的设计,并进行时序仿真。
三、实验程序library ieee;use ieee.std_logic_1164.all;entity seqs isport(s:in std_logic_vector(2 downto 0);y:out bit_vector(7 downto 0));end entity seqs;architecture art of seqs isbegin---- s<=s1 & s2;process(s)beginif(s="000" ) theny<= "00000001";elsif(s="001" ) theny<= "00000010";elsif(s="010" ) theny<= "00000100";elsif(s="011" ) theny<= "00001000";elsif(s="100" ) theny<= "00010000";elsif(s="101" ) theny<= "00100000";elsif(s="110" ) theny<= "01000000";elsif(s="111" ) theny<= "10000000";elsenull;end if;end process;end art;四、仿真及结果分析图4-1 3-8译码器仿真图用三位拨码开关代表译码器的输入端a、b、c,将之分别与EP1K30TC144-3芯片的相应管脚相连;用LED灯来表示译码器的输出,将D0...D7对应的管脚分别与8只LED 灯相连。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity clk_div is
port(clk:in std_logic;
clk_div:out std_logic);
end clk_div;
architecture rt1 of clk_div is
signal q_temp:integer range 0 to 5999999;
begin
process(clk)
begin
if(clk'event and clk='1') then
if(q_temp=5999999) then
q_temp<=0;
else
q_temp<=q_temp+1;
end if;
end if;
end process;
process(clk)
begin
if(clk'event and clk='1') then
if(q_temp=5999999) then
clk_div<='1';
else
clk_div<='0';
end if;
end if;
end process;
end rt1;
library ieee;
use ieee.std_logic_1164.all;
entity seg7 is
port(q: in std_logic_vector(3 downto 0);
segment: out std_logic_vector(0 to 7));
end seg7;
architecture rt1 of seg7 is
begin
process(q)
begin
case q is
when "0000"=> segment <="11000000";
when "0001"=> segment <="11111001";
when "0010"=> segment <="10100100";
when "0011"=> segment <="10110000";
when "0100"=> segment <="10011001";
when "0101"=> segment <="10010010";
when "0110"=> segment <="10000010";
when "0111"=> segment <="11011000";
when "1000"=> segment <="10000000";
when "1001"=> segment <="10010000";
when others=> segment <="XXXXXXXX";
end case;
end process;
end rt1;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity count3081 is
port(
enable:in std_logic;
clk0:in std_logic;
q1:out std_logic_vector(3 downto 0);
q2:out std_logic_vector(3 downto 0);
q3:out std_logic_vector(3 downto 0);
q4:out std_logic_vector(3 downto 0));
end count3081;
architecture rt1 of count3081 is
signal q1_temp,q2_temp,q3_temp,q4_temp:std_logic_vector(3 downto 0);
begin
process(clk0)
begin
if(clk0'event and clk0='1')then
if(enable='1')then
if(q4_temp="0011" and q3_temp="0000" and q2_temp="1000" and q1_temp="0001") then
q1_temp<="0000";
q2_temp<="0000";
q3_temp<="0000";
q4_temp<="0000";
else
if(q1_temp="1001")then
q1_temp<="0000";
q2_temp<=q2_temp+1;
else
q1_temp<=q1_temp+1;
if(q2_temp="1001")then
q2_temp<="0000";
q3_temp<=q3_temp+1;
else
q2_temp<=q2_temp+1;
if(q3_temp="1001")then
q3_temp<="0000";
q4_temp<=q4_temp+1;
else
q3_temp<=q3_temp+1;
if(q4_temp="0011")then
q4_temp<="0000";
end if;
end if;
end if;
end if;
end if;
end if;
end if;
q1<=q1_temp;
q2<=q2_temp;
q3<=q3_temp;
q4<=q4_temp;
end process;
end rt1;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity ch30 is
port(clk:in std_logic;
enable:in std_logic;
segment1:out std_logic_vector(0 to 7);
segment2:out std_logic_vector(0 to 7);
segment3:out std_logic_vector(0 to 7);
segment4:out std_logic_vector(0 to 7)
);
end ch30;
architecture rt1 of ch30 is
component clk_div
port(clk:in std_logic;
clk_div:out std_logic);
end component;
component count3081
port(
enable:in std_logic;
clk0:in std_logic;
q1:out std_logic_vector(3 downto 0);
q2:out std_logic_vector(3 downto 0);
q3:out std_logic_vector(3 downto 0);
q4:out std_logic_vector(3 downto 0));
end component;
component seg7
port(q: in std_logic_vector(3 downto 0); segment: out std_logic_vector(0 to 7));
end component;
signal x:std_logic;
signal q1:std_logic_vector(3 downto 0);
signal q2:std_logic_vector(3 downto 0);
signal q3:std_logic_vector(3 downto 0);
signal q4:std_logic_vector(3 downto 0);
begin
U0:clk_div port map(clk,x);
U1:count3081 port map(enable,x,q1,q2,q3,q4);
U2:seg7 port map(q1,segment1);
U3:seg7 port map(q2,segment2);
U4:seg7 port map(q3,segment3);
U5:seg7 port map(q4,segment4);
end;。