专用集成电路实验报告
1305 0Z 01
1305 0 242 37 7
刘德文
实验一
开发平台软件安装与认知实验
实验内容 1 1 、
本实验以三线八线译码器 (L S 741 38) ) 为例, ,在 在 Xilinx I S E 9 、2 2 软件平台上完成设计电路得 L VHDL 文本输入、语法检查、编译、仿真、管脚分配与编程下载等操作。下载芯片选择 Xil in n x 公司得 Coo lR unn e r II I 系列 XC2 C 25 6- - 7P P Q8 208 作为目标仿真芯片、
2、
用1中所设计得得三线八线译码器 (LS 74 4 1 38) 生成一个 LS7 48 138 元件, ,在 在 X X i linx IS E 9。2 2 软件原理图设计平台上完成 8 LS74138 元件得调用, , 用原理图得方法设计三线八线译码器 (LS74138), 实现编译, , 仿真, , 管脚分配与编程下载等操作。
源程序:
library IEEE; use IEEE。STD_LOGIC_1164.ALL; use IEEE。STD_LOGIC_ARITH。ALL; use IEEE。STD_LOGIC_UNSIGNED、ALL; -—
Unment the following lines to use the declarations that are --
provided for instantiating Xilinx primitive ponents、 --library UNISIM; --use UNISIM.Vponents。all; entity ls74138 is
Port ( g1 : in std_logic;
g2 : in std_logic;
inp : in std_logic_vector(2 downto 0);
y : out std_logic_vector(7 downto 0));
end ls74138; architecture Behavioral of ls74138 is begin process(g1,g2,inp) begin
if((g1 and g2)='1’) then
si pni esacﻩ
when ”000"=>y<="00000001";
;”01000000"=〈y〉=”100" nehwﻩ
when ”010"=>y<=”00000100”;
;"00010000”=<y>=”110” nehwﻩ
;”00001000”=〈y>="001" nehwﻩ
;”00000100”=〈y>=”101" nehwﻩ
when "110”=>y<="01000000";
;"00000001"=<y>="111" nehwﻩ
;""=<y>=srehto nehwﻩ ﻩ
end case;
else
;""=<yﻩﻩ
end if; end process; end Behavioral; 波形文件: :
生成元器件及连接电路
思考: :
有程序可以瞧出, 定义了三个输入端, 一个输出端、g1,g2 为使能输入端, 当全为一时, 开始执行宽度为三得输入in p, 并听过程序实现三八译码器得功能、通过实验, 分别用了原理图与vhdl 语言两种方式进行调试。两种方法各有优缺点。对于原理图而言, 可以清晰直观得瞧出电路各部分得构造, 但却只能在原有得基础上进行链接而无法随意修改元器件功能; vhdl语言则可以按照实际得需求进行编写程序, 从而可以实现开发者想要实现得功能。
实验二
组合逻辑电路得 L VHDL 语言实现
实验内容: 1.用 用 V V HL DL 语言实现优先编码器得设计并实现功能仿真
2. 用VH H DL L 语言实现四选一选择器得设计并实现功能仿真。
1 、优先编码器源程序 LIBRARY IEEE; USE IEEE。STD_LOGIC_1164。ALL; ENTITY priorityencoder IS
PORT (input:IN STD_LOGIC_VECTOR (7 DOWNTO 0);
y:OUT STD_LOGIC_VECTOR (2 DOWNTO 0)); END priorityencoder; ARCHITECTURE rtl OF priorityencoder IS BEGIN
PROCESS (input)
BEGIN
IF(input(0)=’0") THEN
y<="111";
ELSIF(input(1)=’0") THEN
y<="110";
ELSIF(input(2)=’0") THEN
y<=”101”;
ELSIF(input(3)=’0") THEN
y<="100”;
ELSIF(input(4)='0") THEN
y〈="011";
ELSIF(input(5)=’0’) THEN
y<=”010";
ELSIF(input(6)='0’) THEN
y〈=”001”;
ELSE
y〈="000";
END IF;
END PROCESS;
END rtl; 波形图
原理图:
2. 四选一选择器源程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164、ALL; ENTITY mux4 IS
PORT (input:IN STD_LOGIC_VECTOR (3 DOWNTO 0);
a,b:IN STD_LOGIC;
y:OUT STD_LOGIC); END mux4; ARCHITECTURE rt1 OF mux4 IS SIGNAL se1:STD_LOGIC_VECTOR (1 DOWNTO 0); BEGIN
se1〈=b&a;
PROCESS (input,se1)
BEGIN
IF(se1="00”)THEN
y<=input(0);
ELSIF(se1=”01”)THEN
y〈=input(1);
ELSIF(se1="10")THEN
y〈=input(2);
ELSE
y〈=input(3);
END IF;
END PROCESS; END rt1; 波形图
原理图
思考:
1. 优先编码器: 通过程序定义了一个八位得输入端与一个三位得输入端。首先就是通过八位得
输入端得最低 位开始判断,是 如果就是 0, 则输出为:111;是 如果就是 1, 则判断第
二位, 以此类推, 直到最后一位, 如果都不满足, 则输出:00 0。
2 、四选一选择器: 一共有三个输入, 其中一个就是宽度为四得可供选择得输入端, 将一个四位给 宽度得二进制码赋值给 input 端, 通过 a 与 与 b 得输入选择in put 得输出。如ab 为 为 00 时,则输出为:inpu t(0), 以此类推、 实验三
时序逻辑电路得 L VHDL 语言实验
实验内容:( 3选 1) (一)
、 设计一个 0 60 进制得计数器
(二)
设计一带使能得同步复位清零得递增 8 8 位二进制计数器
(三)
设计 一带使能得异步清零复位得递增 8 8 位二进制计数器
六十进制( 异步清零) 源程序:
library ieee; use ieee。std_logic_1164。all; use ieee、std_logic_unsigned.all; entity ycounter is
port(clk,clear,enable:in std_logic;
--ld:in std_logic;
—-d:in std_logic_vector(7 downto 0);
qk:out std_logic_vector(7 downto 0)); end ycounter; architecture a_ycounter of ycounter is
begin
PROCESS (clk)
VARIABLE cnt :std_logic_vector(7 downto 0);
BEGIN
IF (clk"EVENT AND clk = "1') THEN
IF(clear = "0") THEN
cnt := ”00000000";
--ELSE
—-IF(ld = ’0’) THEN
-- cnt := d;
ELSE
IF(enable = ’1’) THEN
cnt := cnt + "00000001";
if(cnt=”00111100")then
cnt := "00000000";
end if;
END IF;
-—END IF;
END IF;
END IF;
qk 〈= cnt;
END PROCESS; end a_ycounter; 波形图:
六十进制( 同步置数) 源程序: library ieee; use ieee。std_logic_1164.all; use ieee.std_logic_unsigned、all; entity ycounter is
port(clk,clear,enable:in std_logic;
ld:in std_logic;
d:in std_logic_vector(7 downto 0);
qk:out std_logic_vector(7 downto 0)); end ycounter; architecture a_ycounter of ycounter is begin
PROCESS (clk)
VARIABLE cnt :std_logic_vector(7 downto 0);
BEGIN
IF (clk’EVENT AND clk = "1’) THEN
IF(clear = '0’) THEN
cnt := ”00000000";
ELSE
IF(ld = ’0') THEN
cnt := d;
ELSE
IF(enable = "1’) THEN
cnt := cnt + ”00000001”;
if(cnt=”00111011”)then
Ld :=1;
end if;
END IF;
END IF;
END IF;
END IF;
qk <= cnt;
END PROCESS; end a_ycounter; 波形图:
思考: 六十进制计数器得实现,1) 异步清零程序得实现: 通过判断最后一个状态, 因为该计数器位六十进制, 所以最后一个状态为 5 9, 用二进制码表示为:"0 0111011” ”, 即当计数器得状态为六十,即"0 011 1100 "状态时, 计数器清零, 输出00000 000 。2) 同步置数程序得实现: 当计数器达到状 态, 当计数器达到状态”00111011" 时,ld 被赋值为0, 执行置数功能, 将d得值赋值给
y, 计数器从零开始计数、
实验四
V V HDL L 层次化设计方法实验
实验内容:
设计一个 8 8 位移位寄存器。各个 D D 触发器模块采用 V V HL DL 语言编写, , 分别用原理图、VHD L语言元件例化语句与生成语句得方法实现 8 8 位移位寄存器得设计。
D 触发器源程序: library IEEE; use IEEE、STD_LOGIC_1164。ALL; use IEEE。STD_LOGIC_ARITH、ALL; use IEEE、STD_LOGIC_UNSIGNED、ALL; —-
Unment the following lines to use the declarations that are -—
provided for instantiating Xilinx primitive components、 --library UNISIM; --use UNISIM.VComponents。all; entity Dchu is
Port ( CLK : in
STD_LOGIC;
D : in
STD_LOGIC;
Q : out
STD_LOGIC;
CLEAR : in
STD_LOGIC;
Q_N : out
STD_LOGIC); end Dchu; ARCHITECTURE BEH OF Dchu IS
;CIGOL_DTS:1Q LANGISﻩ
BEGIN
)1Q,KLC,RAELC( SSECORPﻩ
NIGEBﻩ
IF CLEAR="0’
THEN Q1〈=’0';
ELSIF CLK’EVENT AND CLK=’1' ﻩ;D=〈1Q NEHTﻩ
END IF;
;SSECORP DNEﻩ ﻩ Q〈=Q1;
;1Q ton=〈N_Qﻩﻩ
;HEB DNEﻩ波形图: D 触发器:
八位移位寄存器:
八位移位寄存器原理图:
元件例化: library IEEE; use IEEE.STD_LOGIC_1164。ALL; use IEEE.STD_LOGIC_ARITH、ALL; use IEEE、STD_LOGIC_UNSIGNED.ALL; --
Uncomment the following lines to use the declarations that are --
provided for instantiating Xilinx primitive components. -—library UNISIM; --use UNISIM.Vponents。all; entity shift_reg_8_com is
Port ( a,clk,rst : in
STD_LOGIC;
b: out
STD_LOGIC); end shift_reg_8_com; ARCHITECTURE BEH OF shift_reg_8_ IS
1ffd tnenopﻩPort ( d,clk,rst : in
STD_LOGIC;
q: out
STD_LOGIC); End ponent; Signal q:STD_LOGIC_VECTOR(8DOWNTO0); BEGIN
q(0)<=a; d0:dff1 PORT MAP(q(0),clk,rst,q(1)); d1:dff1 PORT MAP(q(1),clk,rst,q(2)); d2:dff1 PORT MAP(q(2),clk,rst,q(3)); d3:dff1 PORT MAP(q(3),clk,rst,q(4)); d4:dff1 PORT MAP(q(4),clk,rst,q(5)); d5:dff1 PORT MAP(q(5),clk,rst,q(6)); d6:dff1 PORT MAP(q(6),clk,rst,q(7)); d7:dff1 PORT MAP(q(7),clk,rst,q(8)); b<=q(4); End str; 生成语句: library IEEE; use IEEE。STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED。ALL; -—
Unment the following lines to use the declarations that are —-
provided for instantiating Xilinx primitive components、 ——library UNISIM; ——use UNISIM。VComponents、all;
entity shift_reg_8_com is
Port ( a,clk,rst : in
STD_LOGIC;
b: out
STD_LOGIC); end shift_reg_8_com; ARCHITECTURE BEH OF shift_reg_8_ IS
1ffd tnenopmoCﻩPort ( d,clk,rst : in
STD_LOGIC;
q: out
STD_LOGIC); End component; Signal q:STD_LOGIC_VECTOR(8DOWNTO0); BEGIN
;a=<)0(qﻩg1: FOR I IN 0 TO 7 GENERATE dx:dff1 PORT MAP(q(i),clk,rst,q(i+1)); End generate g1; b〈=q(4); End str; 实验结果( 仿真结果) 与分析
元件例化语句由两部分组成, 元件说明语句与元件例化语句。首先要设计被上层电路调用得电路块,即 即 D 触发器模块, 八位移位寄存器就就是通过程序调用八个 个 D 触发器, 每个D触发器都相当于一个模块、生成语句就是将已设计好得D触发器得逻辑语句进行复制, 从而生成一组结构上完全相同得设计单元得电路结构。从上面得两个程序可以瞧出, 当所需要得组件比较少时, 两种语句得大小差不多, 但当所需要得组件比较多时, 生成语句得执行效率明显得要变高, 而且程序所占内存明显减少。
推荐访问: 实验 报告 VHDL上一篇:多元统计分析实验报告
下一篇:实验报告实验总结范文
同志们:今天这个大会,是市委全面落实党要管党、从严治党要求的一项重大举措,也是对县市区委书记履行基层党建工作第一责任人情况的一次集中检阅,同时是对全市基层党建工作的一次再部署、再落实的会议。前面,**
***年,我认真履行领班子、带队伍、抓党员、保稳定的基层党建工作思路,以学习贯彻习近平新时代中国特色社会主义思想和党的十九大历次全会精神为主线,以市局基层党建工作考核细则为落脚点,落实全面从严治党主体
根据会议安排,现将2022年履行抓基层党建工作职责情况报告如下:一、履职工作特色和亮点1 突出政治建设,着力在思想认识上提高。牢固树立抓党建就是抓政绩的理念,以“党建工作抓引领、社区治理求突破,为民服
2022年以来,在**党委的正确领导下,坚持以习近平新时代中国特色社会主义思想为指导,深入学习宣传贯彻党的二十大精神,以党建工作为统领,扎实开展夯实“三个基本”活动,以“四化四力”行动为抓手,聚力创建
各位领导,同志们:根据会议安排,现就2022年度抓基层党建工作情况汇报如下:一、主要做法及成效(一)强化政治引领。一是不断强化理论武装。坚持通过党组会、中心组学习会和“三会一课”,第一时间、第一议题学
2022年度抓基层党建工作述职报告按照党委工作部署,现将本人2022年度抓基层党建工作情况报告如下:一、2022年度抓基层党建工作情况(一)旗帜鲜明讲政治将旗帜鲜明讲政治放在全局发展首要位置,积极开展
2022年,是我在数计系党总支书记这个新岗位上度过的第一个完整的工作年度。回首一年来在校党委的正确领导下,与数计系领导班子和全体师生共同走过的日子,艰辛历历在目,收获温润心田。作为党总支书记,我始终牢
按照考核要求,现将本人一年来,作为统战部长履行职责、廉洁自律等方面情况报告如下:一、着眼增强政治素质,不断深化理论学习坚持把旗帜鲜明讲政治作为履职从政的第一位要求,带领统战系统干部坚决拥护“两个确立”
**年,紧紧围绕党工委、管委会的决策部署,全体人员团结协作、凝心聚力,紧扣党工委“**”基本工作思路,全力开拓进取,认真履职尽责,圆满完成各项工作任务。一、个人思想政治状况柠檬文苑www bgzjy
按照县委关于开展抓基层党建述职评议会议的有关要求,经请示县委组织部同意,今天,我们在此召开2022年度基层党组织书记抓基层党建述职评议会议。1 首先,请**党委书记,**同志述职。**党委能够主动研究