博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LaTeX实验报告模板
阅读量:4597 次
发布时间:2019-06-09

本文共 10432 字,大约阅读时间需要 34 分钟。

  • 可以添加代码列表,编辑公式,文档包含首页,目录,页眉页脚,参考文献以及目录自动索引等。
  • 使用xeCJK中文环境,采用了Adobe的几套字体,大家可以从网上下载相关字体,或修改为自己PC机上有的字体。
  • 在CTEX2.9下采用XeLaTeX+MakeIndex+BibTeX编译无错,我保留了内容,为了方便查看效果,修改相应部分即可。
  • 先来看看整体排版效果如何:

  • LaTeX源代码如下:
\documentclass[10pt]{article}\usepackage[CJKchecksingle,CJKnumber]{xeCJK}\setCJKmainfont[BoldFont={Adobe Heiti Std},	ItalicFont={Adobe Kaiti Std}]{Adobe Song Std}\setCJKsansfont{Adobe Heiti Std}\setCJKmonofont{Adobe Fangsong Std}\punctstyle{hangmobanjiao}\usepackage{graphicx}\usepackage{fancyhdr}\usepackage{amsfonts}\usepackage{booktabs}\usepackage{listings}\lstset{numbers=left,numberstyle=\tiny,keywordstyle=\color{blue!70}, commentstyle=\color{red!50!green!50!blue!50},frame=shadowbox,basicstyle=\ttfamily\tiny,rulesepcolor=\color{red!20!green!20!blue!20}}\usepackage[svgnames, table]{xcolor}\usepackage[bookmarksnumbered, pdfencoding=auto, pdfpagelayout=TwoPageRight,breaklinks, colorlinks, linkcolor=blue, urlcolor=blue]{hyperref}\usepackage{subfig}\newcommand{\Original}{\fontsize{38pt}{\baselineskip}\selectfont}\renewcommand{\contentsname}{目录}\renewcommand{\figurename}{图}\renewcommand{\refname}{参考文献}\renewcommand{\figureautorefname}{图}\pagestyle{fancy}\begin{document}\begin{titlepage}\center{\Original{数字系统EDA技术}\\\Original{实验报告}}\vspace{5cm}\begin{center}\begin{large}\begin{tabular}{cc}实验名称:& 序列发生器和检测器的设计\\\cline{2-2}\\指导老师:& X~X~X\\\cline{2-2}\\学生姓名:& X~X~X\\\cline{2-2}\\学\qquad 号:&2010021XXXXXXX\\\cline{2-2}\end{tabular}\end{large}\end{center}\vfill \hfill  \emph{\today}\end{titlepage}\newpage看不清楚的地方请放大后查看,谢谢!\tableofcontents\newpage\section{实验名称:序列发生器和检测器的设计}\section{实验要求}\begin{enumerate}\item[1.]连续完成一个“10001110”序列和九个非“10001110”序列的发生;\item[2.]检测“10001110”序列,当检测到该序列后点亮EDA实验箱的LED灯;\item[3.]注意为了点亮LED灯,时钟频率不要选择太高,可以选择几十赫兹的频率。\end{enumerate}\section{实验目的}\begin{enumerate}\item[1.]掌握序列发生器和检测器的工作原理;\item[2.]学会用状态机进行数字系统设计。\end{enumerate}\section{实验器材}\begin{itemize}\item PC机一台\item EDA教学实验系统一台\item 下载电缆一根(已接好)\item 导线若干\end{itemize}\section{\textbf{实验原理}}\subsection{\textbf{序列发生器原理}}在数字信号的传输和数字系统的测试中,有时需要用到一组特定的串行数字信号,产生序列信号的电路称为序列信号发生器。本实验要求产生一串序列“10001110”。该电路可由计数器与数据选择器构成,其结构图如下,其中的锁存输出的功能是为了消除序列产生时可能出现的毛刺现象:\begin{figure}[htbp]\centering\includegraphics[scale=0.6]{princ1.eps}\caption{\small{序列发生器框图}}\end{figure}\subsection{\textbf{序列检测器的基本工作过程}}序列检测器用于检测一组或多组由二进制码组成的脉冲序列信号,在数字通信中有着广泛的应用。当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0。由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置的对应码相同。在检测过程中,任何一位不相等都将回到初始状态重新开始检测。方框图如下:\begin{figure}[htbp]\centering\includegraphics[scale=0.6]{princ2.eps}\caption{\small{序列检测器框图}}\end{figure}\subsection{\textbf{状态机的基本设计思想}}在状态连续变化的数字系统设计中,采用状态机的设计思想有利于提高设计效率,增加程序的可读性,减少错误的发生几率。同时,状态机的设计方法也是数字系统中一种最常用的设计方法。一般来说,标准状态机可以分为摩尔(Moore)机和米立(Mealy)机两种。在摩尔机中,其输出仅仅是当前状态值的函数,并且仅在时钟上升沿到来时才发生变化。米立机的输出则是当前状态值、当前输出值和当前输入值的函数。本实验要从一串二进制码中检测出一个已预置的8位二进制码10001110,每增加一位二进制码相当于增加一个状态,再加上一个初始态,用9个状态可以实现。其过程如下:\begin{figure}[htbp]\centering\includegraphics[scale=0.6]{princ3.eps}\caption{\small{状态图}}\end{figure}\section{\textbf{实验步骤}}\subsection[\textbf{序列发生器实现}]{\textbf{按照实验要求编写“10001110”序列发生器的程序;}}序列生成器实现,连续产生"10001110"序列和9个非"10001110"序列:50\%:\newline\begin{lstlisting}[language=VHDL]--generate "10001110" and 9 other sequenceslibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned;entity seqgen is	port(clkin:in std_logic;	       clr:in std_logic;	       sqn:out std_logic);end seqgen;architecture behav of seqgen is	signal cnt:integer range 79 downto 0;	signal tmp:std_logic;	signal datatmp:std_logic_vector(79 downto 0);begin	datatmp(7 downto 0)<="10101010";	datatmp(15 downto 8)<="10101010";	datatmp(23 downto 16)<="10101010";	datatmp(31 downto 24)<="10101010";	datatmp(39 downto 32)<="01110001";	datatmp(47 downto 40)<="01010101";	datatmp(55 downto 48)<="01010101";	datatmp(63 downto 56)<="01010101";	datatmp(71 downto 64)<="01010101";	datatmp(79 downto 72)<="01010101";	process(clkin,clr)	begin		if clr = '1' then 			cnt <= 0;		else			if clkin'event and clkin = '1' then				if cnt = 79 then					cnt <= 0;				else					cnt <= cnt + 1;				end if;			end if;		end if;	end process;	process(cnt)	begin		if clkin'event and clkin = '1' then 			tmp <= datatmp(cnt);		end if;	end process;	--output	sqn<=tmp;end behav;\end{lstlisting}序列检测器,包含两个结构体,其中behav\_b更简洁,采用它进行综合:\begin{lstlisting}[language=VHDL]--detect target sequence.library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity sqndtc is	port(clkin:in std_logic;		   clr:in std_logic;		   din:in std_logic;		   dset:in std_logic_vector(7 downto 0);			led:out std_logic;		     d:out std_logic_vector(31 downto 0));end sqndtc;architecture behav_a of sqndtc is	signal q:integer range 8 downto 0;begin	process(clkin,clr)	begin		if clr = '1' then 			q <= 0;		elsif clkin'event and clkin = '1' then 			case q is 				when 0 => if din = dset(7) then q <= 1;						  else q <= 0;end if;				when 1 => if din = dset(6) then q <= 2;						  else q <= 0;end if;				when 2 => if din = dset(5) then q <= 3;						  else q <= 0;end if;				when 3 => if din = dset(4) then q <= 4;						  else q <= 0;end if;				when 4 => if din = dset(3) then q <= 5;						  else q <= 0;end if;				when 5 => if din = dset(2) then q <= 6;						  else q <= 0;end if;				when 6 => if din = dset(1) then q <= 7;						  else q <= 0;end if;				when 7 => if din = dset(0) then q <= 8;						  else q <= 0;end if;				when others => q <= 0;			end case;		end if;	end process;	process(q)	begin		if q = 8 then led <= '1';		else led <= '0';		end if;	end process;end behav_a;architecture behav_b of sqndtc is 	signal reg:std_logic_vector(7 downto 0);	signal dtmp:std_logic_vector(31 downto 0);begin	process(clkin,clr)	begin		if clr = '1' then 			reg <= "00000000";		elsif clkin'event and clkin = '1' then 			reg(7 downto 1) <= reg(6 downto 0);			reg(0) <= din;		end if;		if reg = dset then 			led <= '1';		else			led <= '0';		end if;	end process;	process(clkin,clr)	begin		if clr='1' then 			dtmp <= conv_std_logic_vector(0,32);		elsif clkin'event and clkin = '1' then			dtmp(31 downto 4) <=dtmp(27 downto 0);			dtmp(3 downto 0) <=conv_std_logic_vector(din,4);		end if;		end process;	d<=dtmp;end behav_b;--use behav_b for synthesisconfiguration config of sqndtc is	for behav_b	end for;end config;\end{lstlisting}\vspace{1cm}8位数码管扫描模块\footnote{加入此模块和7段译码器目的在于在8位数码管上同步观察输入信号,同时在检测到目标序列后点亮LED灯。}:\begin{lstlisting}[language=VHDL]--generate 1 in 8 mux code and selected signallibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity MUX8_1SCAN is	port(clkscan:in std_logic;		din:in std_logic_vector(31 downto 0);		dout:out std_logic_vector(3 downto 0);		sel:out std_logic_vector(2 downto 0)	);end MUX8_1SCAN;architecture behav of MUX8_1SCAN is	signal count:std_logic_vector(2 downto 0);begin	process(clkscan)	begin		if clkscan'event and clkscan='1' then			--loop:000->001->...->111			if count="111" then				count<="000";			else count<=count+1;			end if;		end if;	end process;	process(count,din)	begin		case count is			--mapping			when "000" =>dout<=din(3 downto 0);			when "001" =>dout<=din(7 downto 4);			when "010" =>dout<=din(11 downto 8);			when "011" =>dout<=din(15 downto 12);			when "100" =>dout<=din(19 downto 16);			when "101" =>dout<=din(23 downto 20);			when "110" =>dout<=din(27 downto 24);			when others =>dout<=din(31 downto 28);		end case;	end process;	--output the sel signal	sel<=count;end behav;\end{lstlisting}\vspace{1cm}BCD码到7段码译码模块:\begin{lstlisting}[language=VHDL]--convert 8421bcd code to led 7_segement codelibrary ieee;use ieee.std_logic_1164.all;entity BCD2LED is	port(digit:in std_logic_vector(3 downto 0);		   led:out std_logic_vector(6 downto 0));end BCD2LED;architecture behav of BCD2LED isbegin	process(digit)	begin		case digit is			--mapping			when "0000" =>led<="0111111";			when "0001" =>led<="0000110";			when "0010" =>led<="1011011";			when "0011" =>led<="1001111";			when "0100" =>led<="1100110";			when "0101" =>led<="1101101";			when "0110" =>led<="1111101";			when "0111" =>led<="0000111";			when "1000" =>led<="1111111";			when others =>led<="1101111";		end case;	end process;end behav;	\end{lstlisting}\vspace{1cm}\subsection[\textbf{顶层文件}]{\textbf{进行元件例化}}在顶层文件中进行RTL描述,例化底层元件:\begin{lstlisting}[language=VHDL]--RTL Top-level entitylibrary ieee;use ieee.std_logic_1164.all;entity toplevel is	port(clkin,clr:in std_logic;			clkon:in std_logic;			sel:out std_logic_vector(2 downto 0);			led:out std_logic;    led7:out std_logic_vector(6 downto 0));end toplevel;architecture rtl of toplevel is	--seqgen.vhd	component seqgen is		port(clkin:in std_logic;	       clr:in std_logic;	       sqn:out std_logic);	end component;	--sqndtc.vhd	component sqndtc is		port(clkin:in std_logic;		   clr:in std_logic;		   din:in std_logic;		   dset:in std_logic_vector(7 downto 0);			led:out std_logic;		     d:out std_logic_vector(31 downto 0));	end component;	--8mux1.vhd	component MUX8_1SCAN is		port(clkscan:in std_logic;		din:in std_logic_vector(31 downto 0);		dout:out std_logic_vector(3 downto 0);		sel:out std_logic_vector(2 downto 0)	);	end component;	--bcd2led.vhd	component BCD2LED is		port(digit:in std_logic_vector(3 downto 0);		   led:out std_logic_vector(6 downto 0));	end component;	signal sqn,tmpled:std_logic;	signal sqnset:std_logic_vector(7 downto 0);	signal ledtmp:std_logic_vector(31 downto 0);	signal dout:std_logic_vector(3 downto 0);begin	sqnset <="10001110";	unit_sqngen:seqgen port map(clkin,clr,sqn);	unit_sqndtc:sqndtc port map(clkin,clr,sqn,sqnset,led,ledtmp);	unit_MUX8_1SCAN :MUX8_1SCAN port map(clkon,ledtmp,dout,sel);	unit_BCD2LED:BCD2LED port map(dout,led7);end rtl;\end{lstlisting}\subsection{\textbf{编译仿真}}选择``Processing''->``Start Compilation'',编译无误。设置完成输入波形后再``Processing''->``Start Simulation''进行仿真。\section{\textbf{实验结果}}仿真结果如下,在实验箱上跑的结果也正确,但是因为led点亮时间太短,对摄影技术有较硬要求,故没有成功拍照。\begin{figure}[htbp]\centering\includegraphics[scale=0.6]{simu.eps}\caption{\small{仿真结果}}\end{figure}\section{\textbf{心得体会}}\subsection{\textbf{总结与收获}}\begin{enumerate}\item[1.]巩固了QuartusII环境下用VHDL进行设计的基本方法;\item[2.]巩固了QuartusII集成开发环境的使用和设计流程;\item[3.]巩固了用VHDL进行层次化设计的基本方法;\item[4.]巩固了EDA实验箱的基本功能,巩固了管脚映射,硬件编程下载的方法;\item[5.]巩固了序列发生器,检测器和状态机的设计原理。\end{enumerate}\begin{thebibliography}{9}\bibitem{DDPP}	John F. Wakerly,	\emph{Digital Design Principles and Practices}.	Prentice Hall,	2005.\bibitem{eda}	谭会生\quad 张昌凡,	\emph{EDA技术及应用}.	西安电子科技大学出版社,	2004.\end{thebibliography}\end{document}

转载于:https://www.cnblogs.com/guanhao-oncemore/archive/2013/05/16/3082713.html

你可能感兴趣的文章
【NOI2012】迷失游乐园
查看>>
postgresql 自定义排序
查看>>
任务就绪表OS_PrioGetHighest函数
查看>>
转:大灰狼的汇编视频教程笔记(下)
查看>>
javascript常见的几种事件类型
查看>>
关于大型网站技术演进的思考(八)--存储的瓶颈终篇(8)
查看>>
20+ 个很棒的 jQuery 文件上传插件或教程
查看>>
关于Struts2的多文件上传
查看>>
hosts学习整理
查看>>
github上的版本和本地版本冲突的解决方法
查看>>
ModalPopupExtender控件属性、功能
查看>>
js 工厂模式、简单模式、抽象模式
查看>>
扩展卡尔曼滤波(MRPT)
查看>>
如何解决Bluetooth系统设计的棘手问题
查看>>
加班两个星期做的一个小系统~(winform)
查看>>
排版系列1
查看>>
IDEA 生成 jar 包
查看>>
加减乘除混合版
查看>>
linux基础6-bash shell编程
查看>>
php 语法
查看>>