数字信号处理实验指导书教程.doc_第1页
数字信号处理实验指导书教程.doc_第2页
数字信号处理实验指导书教程.doc_第3页
数字信号处理实验指导书教程.doc_第4页
数字信号处理实验指导书教程.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一 Max+plus图形输入的设计过程1Max+plus的设计过程Max+plus的设计过程流程图如下开始设计输入项目编译功能/时序方针项目校验编程/配置项目编程(1) 设计输入用户可使用 Max+plus的图形编辑器和文本编辑器实现图形的输入,也可输入网表文件。(2) 项目编译完成对设计的处理,Max+plus提供了一个完全集成的编译器。MAX+PLUS 编译器的编译过程如下图用户可使用 Max+plus的图形编辑器和文本编辑器实现图形的输入,也可输入网表文件。用户可使用 Max+plus的图形编辑器和文本编辑器实现图形的输入,也可输入网表文件。图1 MAX+PLUS 编译器的编译过程2图形输入的设计过程 将以图形输入法为例讲述设计的整个过程,本例中,以使用74161设计一个模为12的计数器,该设计项目仅含一个设计文件,使用图形输入。(1)建立图形输入文件 在file 菜单下选择“NEW. ” 出现图2新建文件类型对话框图形输入文件波形输入文件文本输入文件编译生成的符号文件图2新建文件类型对话框在图2中选择“Graphic Editor file ”后,即了开始建立图形输入文件如图3所示。图3图形编辑器窗口(2)调入元件:74161 在图形编辑区双击鼠标左键可打开“Enter symbol”对话框如图4。在该地画框你可选择需要输入的元件/逻辑符号。图4元件输入对话框图5选中74161图6 调入74161(3) 保存文件从“File ”菜单下选择“save ”,出现文件保存对话框,选择“OK”,使用默认的文件名存盘。此处默认的文件名为“cntm12.gdf”。(4) 调入一个三输入与非门:采用同步置零法,使74161在“1011”处置零来实现模为12的计数器。故需调用一个三输入与非门,三输入与非门位于库“prim”中,名称为“nand3”(n代表输出反向,and代表与门,代表输入的个数;所以“nand3”为一个三输入与非们,同样“or6”代表一个输入或门:xor代表异或门)按照步骤调入“nand”和代表低电平的“gnd”(位于库prim中),也可在图形编辑区双击鼠标左键后,在符号输入对话框中直接输入“gnd”,按“OK”即可。若你已知道符号名,可采用这种方法直接调用该符号代表的元件。在输入,nand3,gnd三个符号,可得图 图()连线:如果需要连接元件的两个端口,则将鼠标移到其中的一个端口上,这时鼠标指示符会自动变为“”形,然后)按住鼠标左键并拖动鼠标至第二个端口(或其他地方);)松开鼠标左键后,则可画好一条连线;)若想删除一条连线,只需用鼠标左键点中该线,被点中的线会变为高亮线(为红线),此时按“Delete”键即可删除。按图连线,并存盘。 图连线图(6)添加输入输出因脚;输入引脚的符号为“input”,输出引脚的符号名“output”,仿照前面添加的方法加入三个输入引脚和五个输出引脚。“input”和“output”皆位于库“prim”下。它们外形如下:输入引脚输出引脚、在本例中,三个输入引脚将分别被名为en,clear,clk,分别作为计数使能,清零,时钟输入。五个输出引脚分别被命名为q0,q1,q2,q3,cout分别作为计数器计数输出,进位输出。双击其中一个输入引脚的“PIN_NAME”,输入“en”。就命名了输入引脚“en”。按同样方法命名其他输入输出引脚。命完名后将这些引脚同对应好的元件端口连接好。可得图9。在绘图过程中,可利用绘图工具条实现元件拖动,交叉线接断功能。在完成图9后,为验证项目的正确性,开始下面的步骤:项目编译。图9 模=12的计数器电路图(7)项目编译完成设计文件文件后,可开始对其进行编译。在“MAX+PLUSII”菜单种选择“Compiler”,即可打开编译器。选择“Start”就可开始编译 。编译成功后可生成时序模拟文件。若有错误,编译器将停止编译,并在下面的信息框中给出错误信息,双击错误心条,一般可给出错误之处。(8)项目校验编译器通过”Timing SNF Extractor”后就可以进行时序模拟了,其步骤如下:1 建立波形输入文件(也称模拟器通道文件SCF):a. 从菜单“File”中选择“New”打开新建文件夹类型对话框,如图1.18。选择”WaveformFile(.scf)”项后选择“OK”,则出现如图10的窗口。图10波形编辑器窗口b.在图10波形编辑窗口的Name下空白处单击鼠标右键,出现浮动菜单,如图所示, 在上图中选择“Enter nodes from SNF”即可打开图10对话框。c. 单击“List”按钮,即可看到在我们设计中的输入/输出信号,如图11所示,然后将这些信号选择到“Selected Nodes&Groups”区,表示可对这些信号进行观测。图10 从SNF文件输入观测节点对话框d. 之后单击“OK”波形编辑器窗口变为图12所示。图11图12波形文件中的输入输出信号2编辑输入节点波形,即为输入信号建立输入波形 图13 建好的输入波形图3 行模拟器,进行时序模拟a. 从菜单“MAX+PLUS”中选择“Simulator”,即可打开模拟器b. 单极按钮“Start”开始模拟c. 模拟完毕后,打开刚才编辑的波形文件,就可开始对模拟结果进行检查。 图14 模拟器 图15 模拟结果实验二Max+plus语言描述输入的设计过程 采用VHDL设计,可提高开发速度,设计易读。MAX+PLUS支持VHDL语言,VHDL,Verilog HDL等语言输入。其设计过程与图形方法基本相同,仅在开始时建立文本文件。 选择File/New出现设计输入文件选择对话框,选择Text Editor File.例如使用VHDL设计十进制的计数器,输入文本如下:LIBRARY ieee;USE ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY ls160 IS PORT(data: in std_logic_vector(3 downto 0); clk,ld,p,t,clr:in std_logic; count: buffer std_logic_vector(3 downto 0); tc:out std_logic);END ls160;ARCHITECTURE behavior OF ls160 ISBEGIN tc=1 when (count=1001 and p=1 and t=1 and ld=1 and clr=1) else 0; cale: process(clk,clr,p,t,ld) begin if(rising_edge(clk) then if(clr=1)then if(ld=1)then if(p=1)then if(t=1)then if(count=1001)then count=0000; else count=count+1; end if; else count=count; end if; else count=count; end if; else count=data; end if; else count=0000; end if; end if; end process cale; END behavior; 将此文件设为当前项目后编译,之后建立模拟文件来仿真此计数器,下载等。 实验三 四位全加器电路设计一、实验目的1 用组合电路涉及4位全加器2 了解VHDL语言的行为描述的优点3 初步掌握系统内部STD_LOGIC_UNSIGEND包的调用二、实验原理4位全加器可看作4个1位全加器串行构成,具体连接方法如下图所示:B3 S3A3 3 C3C13 B2 S2A2 2 C2C12 B1 S1A2 1 C1C11B0 S0A0 0 C0C10 S3COOS2S1S0B3A3B2A2B1A1B0A0C1 有1位全加器构成4位全加器三、实验内容1. 用VHDL 语言设计4位全加器 2. 锁定引脚,并下载验证之。3. 不调用包,自行按示意图进行设计,体会调用系统包的便利性。四、设计提示调STD_LOGIC_UNSIGEND包,可以使用户在更高层上进行设计。五、实验报告要求1. 叙述所设计的4位全加器工作原理2. 写出1位全加器的VHDL 语言源程序3. 写出心。得体会六、演示说明 功能: 将两个四位的二进制数(A,B)和进位CARRY相加,输出一个四位的二进制数(S)和进位位(CO)。 下载程序: adder4.sof 开关设置: jp1 K1-k8 L9-L16 其它 插上 插上 不插 操作运行: K1K4分别对应输入二进制数a的高位到低位。 K5K8 分别对应输入二进制数b的高位到低位。 K9 进位CARRY。 L15L12 对应输出和S的高位到低位。 L16 显示进位信号。附:VHDL 语言源程序 library ieee;use ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;entity adder4 is port(a,b:in std_logic_vector(3 downto 0); ci:in std_logic; sum:out std_logic_vector(4 downto 0);end adder4;ARCHITECTURE maxpld OF adder4 ISsignal halfadd:std_logic_vector(4 downto 0);BEGIN halfadd=(0&a)+(0&b); sum=halfadd when ci=0 else halfadd+1;END maxpld; 实验五 四位并行乘法器电路设计一、 实验目的1 用组合电路设计四位并行乘法器。2 了解并行法设计乘法器的原理。3 掌握调用自己设计的实体的方法。二、 实验原理四位乘法器有多种实现方案,根据乘法器的运算原理,使部分乘积项对齐相加的方法(通常称并行法)是最典型的算法之一。这种算法可用组合电路实现。其特点是设计思路简单直观、电路运算速度快,缺点是使用器件较多。1 并行乘法的算法下面将从乘法例题来分析这种算法,题中M4M3M2M1是被乘数,也可以用M表示N4N3N2N1是乘数,也可以用N表示。从以上乘法实例中可以看到,乘数N中的每一位都要与被乘数M相乘,获得不同的积,如MN1,MN2,。位积之间以及位积与部分乘法之和相加时需按高低位对齐,并行相加,才能得到正确结果。A3A2A1A0P7 P6 P5 P4 P3 P2 P1 P0 XB3XB2XB1XB0加法器加法器加法器 2 并行乘法电路原理并行乘法电路完全是根据以上算法而设计。其电路框图如图4-1所示。图中XB0 XB1 XB2 XB3是乘积B的第12位与被乘数A相乘的14bit乘法器。三个加法器是将14bit乘法器的积作为被加数A,前一级加法器的和作为加数B,相加后得到新的部分积,通过三级加法器的累加最终得到乘积P(P7P6P5P4P3P2P1)。三、 实验内容1 用VHDL语言或原理图输入法设计四位乘法器;2 设计乘法器功能模块及四位加法器功能模块;3 锁定引脚,并下载。四、 设计提示1 先读懂并行乘法器的算法和电路原理;2 使用模块化设计方法。五、 实验报告要求1 叙述所设计的四位乘法器电路工作原理;2 写出各模块源文件;3 心得体会。六、 演示说明功能: 输入为两个4 BIT 二进制数A和B,输出为8 BIT积result。 下载程序: mul4p.sof开关设置: JP1 K1-K8 L16-L9 其它 插上 插上 不插 操作运行: K1K4 对应二进制乘数A的高位到低位。 K5K8 对应二进制被乘数B的高位到低位。 L16L9对应积result的高位到低位。附:VHDL 语言源程序library ieee;use ieee.std_logic_1164.all;uSE ieee.std_logic_unsigned.all;entity mul4p isport(op1,op2:in std_logic_vector(3 downto 0); result:out std_logic_vector(7 downto 0);end mul4p;architecture count of mul4p isCOMPONENT and4a PORT(a:IN STD_LOGIC_VECTOR(3 DOWNTO 0); en:IN STD_LOGIC; r:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT;COMPONENT ls283 poRT(o1,o2:IN STD_logic_vector(3 downto 0); res:out std_logic_vector(4 downto 0);end component;signal sa:std_logic_vector(3 downto 0);signal sb:std_logic_vector(4 downto 0);signal sc:std_logic_vector(3 downto 0);signal sd:std_logic_vector(4 downto 0);signal se:std_logic_vector(3 downto 0);signal sf:std_logic_vector(3 downto 0);signal sg:std_logic_vector(3 downto 0);-signal tmp1:std_logic;beginsg=(0&sf(3 downto 1);-tmp1op2,en=op1(1),r=se);U1:and4a port map(a=op2,en=op1(3),r=sa);U2:ls283 port map(o1=sb(4 downto 1),o2=sa,res=result(7 downto 3);U3:and4a port map(a=op2,en=op1(2),r=sc);U4:ls283 port map(o1=sc,o2=sd(4 downto 1),res=sb);u5:ls283 port map(o1=sg,o2=se,res=sd);u6:and4a port map(a=op2,en=op1(0),r=sf);result(0)=sf(0);result(1)=sd(0);result(2)=sb(0);-result(7 downto 0)=00000000;end count;library ieee;use ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;entity and4a is port(a:IN STD_LOGIC_VECTOR(3 DOWNTO 0); en:IN STD_LOGIC; r:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end and4a; architecture behave of and4a isbeginprocess(en,a(3 downto 0) begin if(en=1) then r=a; else r=0000; end if;end process;end behave;library ieee;use ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;entity ls283 is port(o1,o2:IN STD_LOGIC_VECTOR(3 DOWNTO 0); res:OUT STD_LOGIC_VECTOR(4 DOWNTO 0);end ls283; architecture behave of ls283 isbeginprocess(o1,o2) begin res=(0&o1)+(0&o2);end process;end behave;实验五 设计74LS160计数器功能模块 一、实验目的1 学会用VHDL语言设计时序电路。2 用VHDL语言设计74LS160计数器功能模块。二、实验原理计数器是最常用的寄存器逻辑电路,从微处理器的地址发生器到频率计都需要用到计数器。一般计数器可以分为两类:加法计数器和减法计数器。加法计数器每来一个脉冲数值加1;减法计数器每来一个脉冲数值减1。下面将通过模仿中规模集成电路74LS160的功能,用VHDL语言设计一个十进制可预置计数器。74LS160共有一个时钟输入端CLK,一个清除输入端CLR,两个计数允许信号P和T,4个可预置数据输入端D3-D0,一个置位允许端LD,4个计数输出端Q3-Q0,一个进位输出端TC,其工作模式见下表所示。 74LS160功能表 功能 输 入 输 出 操作 CLR CLK P T LD Dn Qn TC 复位 L X X X X X X T 预置 H C X X L L L L 计数 H C H H H X +1 D 保持 H X L X H X Qn D 保持 H X X L H X Qn L 注:D=Q3&!Q2&!Q1&Q0三、实验内容1 分析上述程序的流程,搞清其逻辑功能。2 用VHDL语言设计一个具有74LS160功能的电路。3 通过仿真和下载验证设计电路的正确性。四、实验报告要求1 写出74LS160的VHDL语言源文件。2 写出74LS160的仿真文件。3 写出设计心得体会。五、演示说明功能: 设计74LS160计数器的功能 下载程序: ls160.sof 开关设置: jp1 K1-k8

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论