ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:473.28KB ,
资源ID:7795439      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7795439.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(北理工VHDL实验报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

北理工VHDL实验报告.docx

1、北理工VHDL实验报告 本科实验报告 实验名称: VHDL语言及集成电路设计实验 课程名称:VHDL语言及集成电路设计实验时间:12、13周周二上午14、15周周六下午任课教师:任仕伟实验地点:4#427实验教师:任仕伟实验类型: 原理验证 综合设计 自主创新学生姓名:学号/班级:组 号:学 院:信息与电子学院同组搭档:专 业:微电子成 绩: 实验一:带有异步复位端的D触发器一、实验目的(1)熟悉linux操作环境和modelsim软件环境(2)理解时序逻辑和组合逻辑电路的区别(3)理解并行语句和顺序语句(4)用VHDL语言编写一个带有异步复位端的D触发器及其测试文件二、实验原理(1)组合逻辑

2、和时序逻辑组合逻辑电路当前输出的值仅取决于当前的输入,不需要触发器等具有存储能力的逻辑单元,仅仅使用组合逻辑门;时序逻辑电路的当前输出不仅取决于当前的输入,还与以前的输入有关,这类电路中包括寄存器等元件,也包括组合逻辑电路,寄存器通过一个反馈环和组合逻辑模块相连,触发器便是属于时序逻辑电路;(2)并行和顺序代码从本质上讲,VHDL代码是并发执行的。只有PROCESS,FUNCTION或PROCEDURE内的代码才是顺序执行的。当它们作为一个整体时,与其他模块之间又是并发执行的。以下是3个并发描述语句(stat1,stat2和stat3)的代码,会产生同样的电路结构。 stat1 stat3 s

3、tat1stat2 = stat2 = stat3 = 其他排列顺序stat3 stat1 stat2(3)并行语句进程(PROCESS)1)语法结构: 进程名: PROCESS (敏感信号列表)变量说明语句BEGIN(顺序执行的代码)END PROCESS 进程名;2) PROCESS 的特点 多进程之间是并行执行的; 进程结构内部的所有语句都是顺序执行的; 进程中可访问结构体或实体中所定义的信号; 进程的启动是由敏感信号列表所标明的信号来触发,也可以用WAIT语句等待 一个触发条件的成立。 各进程之间的通信是由信号来传递的。(4)带有异步复位端的D触发器三、实验代码LIBRARY IEEE

4、;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dff ISPORT(d,clk,rst:IN STD_LOGIC;q:OUT STD_LOGIC);END dff;定义entity dffARCHITECTURE behavior OF dff IS BEGINPROCESS(rst,clk)BEGINIF(rst=1) THENq=0;如果复位信号有效,q为0ELSIF(clkEVENT AND clk=1) THEN q=d;上升沿触发且,qd,clk=clk,rst=rst,q=q); clk_gen:processbeginclk=0;wait for clk

5、_period/2; clk=1;wait for clk_period/2; end process;d_gen:processbeginwait for 100 ns;d=1;wait for 100 ns;d=0;end process;rst_gen:processbeginrst=1;wait for 150 ns;rst=0;wait for 500 ns;rst=1;wait for 150 ns; wait;end process;end tb_behavior;四、实验结果五、实验心得第一次使用此软件,略有陌生,耗费时间稍久,因为之前用过的quartusii9.0不必使用tb

6、文件,所以第一次实验刚开始并没有明白tb文件的用途,上网查找资料之后才明白过来,不过好在程序简单,顺利完成实验。实验二 步进电机控制器一、实验目的(1)理解两种状态机的区别(2)熟悉两种编程风格(3)编写BCD计数器和步进电机二、实验原理(1)米里型状态机和摩尔型状态机米里(Mealy)型状态机:状态机的输出信号不仅与电路的当前状态有关,还与当前的输入有关摩尔(Moore)型状态机:状态机的当前输出仅仅由当前状态决定。(2)有限状态机设计流程:1)理解问题背景。2) 逻辑抽象,得出状态转移图。 3 状态简化。4)状态分配。5) 用VHDL来描述有限状态机。(3)BCD计数器原理图(4)步进电机

7、控制器三、实验代码(1)BCD计数器library ieee;use ieee.std_logic_1164.all;entity counter isport(clk,rst:in std_logic; count:out std_logic_vector(3 downto 0); end counter;定义entity counterarchitecture state_machine of counter istype state is(zero,one,two,three,four,five,six,seven,eight,nine);自定义type类型的量,用来表示程序中要用到的不

8、同状态signal pr_state,nx_state:state;定义信号pr_state,nx_state,均为state类型的量beginprocess (rst,clk)beginif(rst=1)thenpr_state count =0000;nx_state count =0001;nx_state count =0010;nx_state count =0011;nx_state count =0100;nx_state count =0101;nx_state count =0110;nx_state count =0111;nx_state count =1000;nx_s

9、tate count =1001;nx_state = zero;end case;使用case语句,列举所有状态,同时指出所有现态的次态指向end process;end state_machine;(2)步进电机控制器library ieee;use ieee.std_logic_1164.all;entity stepmotor isport(clk,rst,x:in std_logic; output:out std_logic_vector(3 downto 0); end stepmotor;定义entity stepmoterarchitecture state_machine

10、of stepmotor istype state is(s0,s1,s2,s3);自定义type类型signal pr_state,nx_state:state;定义信号量beginprocess (clk,rst)beginif(rst=1)thenpr_state=s0;elsif(clk event and clk =1)thenpr_state output =0001;nx_state output =0010;nx_state output =0100;nx_state output =1000;nx_state output =0001; nx_state output =00

11、10; nx_state output =0100; nx_state output =1000; nx_state = s0; end case;end if;end process;end state_machine;四、仿真结果BCD计数器:步进电机控制器:五、实验心得这次所做实验为BCD计数器和步进电机控制,程序比较简单,有可以使用的模板,结果也比较有意思,主要是对状态机的理解运用和VHdl语句中例如case语句、if语句、when语句的区分和正确使用。实验三 十六位加法器设计一、实验目的(1)掌握元件例化的方法(2)理解for/generate语句的用法(3)编程完成4位加法器和16

12、位加法器的设计二、实验原理(1)元件的例化元件声明是对VHDL模块(即底层设计,也是完整的VHDL设计)的说明,使之可在其他被调用,元件声明可放在程序包中,也可在某个设计的构造体中声明。 元件例化指元件的调用。元件声明及元件例化的语法分别如下:元件声明:component元件实体名prot(元件端口信息,同该元件实现时的实体的port部分);end compnent;元件例化:例化名:实体名,即元件名port map(端口列表);(2)生成语句(GENERATE)GENERATE语句用于循环执行某项操作。FOR模式的生成语句主要用于相同结构的描述中;FOR模式语法结构:FOR/GENERATE

13、:标号:FOR 变量IN 离散区间GENERATE(并行处理语句);END GENERATE;(3)16位加法器的设计三、实验代码4位加法器:library ieee;use ieee.std_logic_1164.all;entity adder4 isport(a,b:in std_logic_vector(3 downto 0);cin:in std_logic;s:out std_logic_vector(3 downto 0);cout:out std_logic);end adder4;定义entity adder4,cin为进位输入,cout为进位输出,s为求和结果archite

14、cture behav of adder4 issignal c: std_logic_vector(4 downto 0);signal p: std_logic_vector(3 downto 0);signal g: std_logic_vector(3 downto 0);beginG1:for i in 0 to 3 generatep(i)=a(i) xor b(i);g(i)=a(i) and b(i);s(i)=p(i) xor c(i);end generate;c(0)=cin;c(1)=(cin and p(0) or g(0);c(2)=(cin and p(0) an

15、d P(1) or (g(0) and p(1) or g(1);c(3)=(cin and p(0) and P(1)and P(2) or (g(0) and p(1) and P(2) or (g(1) and P(2) or g(2);c(4)=(cin and p(0) and P(1)and P(2) and P(3) or (g(0) and p(1) and P(2) and P(3) or (g(1) and P(2) and P(3) or (g(2) and P(3) or g(3);couta,b=b,s=s,cin=cin,cout=cout );processbeg

16、ina=x0000;b=x0000;cin=1;wait for 100ns;a=0000100000000001; b=0100000000000111; cin=0;wait for 100ns;a=x1111;b=x1111;cin=1;wait for 100ns;a=0000100000000001; b=1110000000000111; cin=1;wait ;end process;end behav;四、实验原理五、实验心得本次实验主要是加法器设计,课堂上曾经讲过两种,即逐级进位加法器和超前进位加法器,在使用第一种思路设计时,程序出现错误,当时未调试成功(后来发现错误是公式代

17、入错误),改为使用课件上给出的超前进位加法器的原程序,编写tb文件之后,程序正常运行。在程序的知识运用方面,主要是对元件实例化的实际运用,掌握基本使用规则,并能从中体会出其方便好用之处为之后的灵活运用打下基础。实验四 选择运算器一、实验目的:(1)对前几次实验用到的知识进行总结(2)综合运用理论课上的知识,完成选择运算器的设计二、实验原理(1)设计要求:输出信号:一个COUT(15:0),16位乘法器:要求用部分积实现加法器:8位加法器,高7位补零完成比较器、乘法器、加法器的设计,不可以直接使用+,x运算符直接实现。(2)选择器运算器总原理图(3)乘法器部分采用并行乘法器(4)加法器:8位加法

18、器的设计和上一个试验类似,先设计一个4位加法器,进而编译8位加法器。三、实验代码Adder4:library ieee;use ieee.std_logic_1164.all; entity adder4 is port(a,b:in std_logic_vector(3 downto 0); sum:out std_logic_vector(3 downto 0); jin:out std_logic; cin:in std_logic:=0); end adder4; architecture adder4 of adder4 is signal c:std_logic_vector(4

19、downto 0); signal p:std_logic_vector(3 downto 0); signal g:std_logic_vector(3 downto 0); begin G1:for i in 0 to 3 generate p(i)=a(i) xor b(i); g(i)=a(i) and b(i); sum(i)=p(i) xor c(i);end generate;c(0)=cin;c(1)=(c(0) and p(0) or g(0);c(2)=(c(0)and p(0) and p(1) or (g(0) and p(1) or g(1);c(3)=(c(0) and p(0) and p(1) and p(2) or (g(0) and p(1) and p(2) or (g(1) and p(2) or g(2);c(4)=(c(0) and p(0) and p(1) and p(2) and p(3) or (g(0) and p(1) and p(2) and p(3) or (g(1) and p(2) and p(3) or (g(2) and p(3) or g(3);jin0); temp1:=(others=0); for i in 0 to 7 loop tem

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1