文档库 最新最全的文档下载
当前位置:文档库 › 北航verilog实验报告(全)

北航verilog实验报告(全)

北航verilog实验报告(全)
北航verilog实验报告(全)

目录

实验一 (2)

实验二 (8)

实验三 (14)

实验四 (27)

实验一

实验目的:熟悉硬件开发流程,掌握Modelsim设计与仿真环境,学会简单组合逻辑电路、简单时序逻辑电路设计,不要求掌握综合和综合后仿真。

实验内容:必做实验:练习一、简单的组合逻辑设计

练习二、简单分频时序逻辑电路的设计

选做实验:选做一、练习一的练习题

选做二、7段数码管译码电路

练习一、简单的组合逻辑设计

描述一个可综合的数据比较器,比较数据a 、b的大小,若相同,则给出结果1,否则给出结果0。

实验代码:

模块源代码:

module compare(equal,a,b);

input a,b;

output equal;

assign equal=(a==b)?1:0;

endmodule

测试模块源代码:

`timescale 1ns/1ns

`include "./compare.v"

module t;

reg a,b;

wire equal;

initial

begin

a=0;

b=0;

#100 a=0;b=1;

#100 a=1;b=1;

#100 a=1;b=0;

#100 a=0;b=0;

#100 $stop;

end

compare m(.equal(equal),.a(a),.b(b));

endmodule

实验波形

练习二、简单分频时序逻辑电路的设计

用always块和@(posedge clk)或@(negedge clk)的结构表述一个1/2分频器的可综合模型,观察时序仿真结果。

实验代码:

模块源代码:

module halfclk(reset,clkin,clkout);

input clkin,reset;

output clkout;

reg clkout;

always@(posedge clkin)

begin

if(!reset) clkout=0;

else clkout=~clkout;

end

endmodule

测试模块源代码:

`timescale 1ns/100ps

`define clkcycle 50

module tt;

reg clkin,reset;

wire clkout;

always#`clkcycle clkin=~clkin;

initial

begin

clkin=0;

reset=1;

#10 reset=0;

#110 reset=1;

#100000 $stop;

end

halfclk m0(.reset(reset),.clkin(clkin),.clkout(clkout));

endmodule

练习题1:设计一个字节(8位)的比较器。要求:比较两个字节的大小,并改写测试模型,使其能进行比较全面的测试。观察RTL级仿真、综合后门级仿真和布线后仿真有什么不同,并说明不同的原因。从文件系统中查阅自动生成的compare.vm,compare.vo文件和compare.v文件作比较,说出不同点和相同点。实验代码:

模块源代码:

module compare1(equal,a,b);

input [7:0]a,b;

output equal;

assign equal=(a>b)?1:0;

endmodule

测试模块源代码:

`timescale 1ns/1ns

`include "./compare1.v"

module ttt;

reg [7:0]a,b;

wire equal;

initial

begin

a=8'b00000000;

b=8'b00000000;

#100 a=8'b00001001;b=8'b00100010;

#100 a=8'b00110001;b=8'b00100100;

#100 a=8'b00010001;b=8'b00101000;

#100 a=8'b10000001;b=8'b00110000;

#100 $stop;

end

compare1 m(.equal(equal),.a(a),.b(b));

endmodule

实验分析:RTL,综合后门级仿真和布线后仿真的区别

1.RTL行为级仿真

这个阶段的仿真可以用来检查代码中的语法错误以及代码行为的正确性,其中不包括延时信息。如果没有实例化一些与器件相关的特殊底层元件的话,这个阶段的仿真也可以做到与器件无关。因此在设计的初期阶段不使用特殊底层元件即可以提高代码的可读性、可维护性,又可以提高仿真效率,且容易被重用。

2.综合后门级功能仿真(前仿真)

一般在设计流程中的第二个仿真是综合后门级功能仿真。绝大多数的综合工具除了可以输出一个.VO标准网表文件以外,还可以输出Verilog或者VHDL网表,其中标准网表文件是用来在各个工具之间传递设计数据的,并不能用来做仿真使用,而输出的Verilog或者VHDL网表可以用来仿真,之所以叫门级仿真是因为综合工具给出的仿真网表已经是与生产厂家的器件的底层元件模型对应起来了,所以为了进行综合后仿真必须在仿真过程中加入厂家的器件库,对仿真器进行一些必要的配置,不然仿真器并不认识其中的底层元件,无法进行仿真。Xilinx公司的集成开发环境ISE中并不支持综合后仿真,而是使用映射前门级仿真代替,对于Xilinx开发环境来说,这两个仿真之间差异很小。

3.时序仿真(后仿真)

在设计流程中的最后一个仿真是时序仿真。在设计布局布线完成以后可以提供一个时序仿真模型,这种模型中也包括了器件的一些信息,同时还会提供一个SDF时序标注文件(Standard Delay format Timing Anotation)。SDF时序标注最初使用在Verilog语言的设计中,现在VHDL语言的设计中也引用了这个概念。对于一般的设计者来说并不需知道SDF 对源程序.v的仿真称之为功能仿真,对.vo的仿真称之为网表仿真,这里使用的就是厂家实际用到的元件,是为了确认综合是不是实现了用户预想的功能。和加入sdo之后的仿真是真正加入了线路延时的仿真。

选做2:7段数码管译码电路

实验代码:

模块源代码:

module segment(a,b);

input [3:0]a;

output [6:0]b;

reg[6:0]b;

always @(a)

begin

case(a)

4'd0:b=7'b0000001;

4'd1:b=7'b1001111;

4'd2:b=7'b0010010;

4'd3:b=7'b0000110;

4'd4:b=7'b1001100;

4'd5:b=7'b0100100;

4'd6:b=7'b0100000;

4'd7:b=7'b0001111;

4'd8:b=7'b0000000;

4'd9:b=7'b0000100;

default:b=7'bx;

endcase

end

endmodule

测试模块源代码:

`timescale 1ns/1ns

module segment_tb;

reg[3:0]a;

wire[6:0]b;

initial

begin

a=4'b0;

#10 $stop;

end

always

begin

#1 a=a+1'b1;

end

segment m(.a(a),.b(b)); endmodule

实验波形:

实验二

实验目的:掌握较为复杂电路设计方法。

实验内容:必做实验:练习三、利用条件语句实现计数分频时序电路

练习五、用always块实现较复杂组合逻辑电路选做实验:选做一、练习三的练习题

选做二、练习五的练习题

练习三:利用条件语句实现计数分频时序电路

实验目的:

1.掌握条件语句在简单时序模块设计中的使用。

2.学习在Verilog模块中应用计数器。

3.学习测试模块的编写、综合和不同层次的仿真。

实验内容:

可总和风格的分频器,可将10MHZ的时钟分频为500khz的时钟。

实验代码:

模块源代码:

module fdivision(RESET,F10M,F500K);

input F10M,RESET;

output F500K;

reg F500K;

reg [7:0]j;

always@(posedge F10M)

if(!RESET) //低电平复位

begin

F500K<=0;

j<=0;

end

else

begin

if(j==19) //对计数器进行判断,以确定F500K信号是否反转

begin

j<=0;

F500K<=~F500K;

end

else

j<=j+1;

end

endmodule

测试模块源代码:

`timescale 1ns/100 ps

`define clk_cycle 50

module division_Top;

reg F10M,RESET;

wire F500K_clk;

always #`clk_cycle F10M= ~F10M;

initial

begin

RESET=1;

F10M=0;

#100 RESET=0;

#100 RESET=1;

#10000 $stop;

end

fdivision fdivision(.RESET(RESET),.F10M(F10M),.F500K(F500K_clk));

endmodule

实验波形:

实验五:用always块实现较复杂的组合逻辑电路

实验目的:

1.掌握用always实现较大组合逻辑电路的方法

2.进一步了解assign与always两种组合电路实现方法的区别和注意点

3.学习测试模块中随机数的产生和应用

4.学习综合不同层次的仿真,并比较结果

实验内容:

设计一个简单的指令译码电路,通过对指令的判断,对输入数据执行相应的操作,包括加、减、与、或和求反,无论数据还是指令发生变化,都要做出及时的反应。

实验代码:

模块原代码:

`define band 3'd2

`define bor 3'd3

`define unegate 3'd4

module alu(out,opcode,a,b);

output[7:0] out;

reg[7:0] out;

input[2:0] opcode;

input[7:0] a,b;

always@(opcode or a or b)

begin

case(opcode)

`plus: out=a+b; //以下是加,减,与,或,非,反等等

`minus: out=a-b;

`band: out=a&b;

`bor: out=a|b;

`unegate: out=~a;

default: out=8'hx; //没有收到指令就随意输出

endcase

end

endmodule

指令译码器的测试模块源代码:

`timescale 1ns/1ns

`include "./alu.v"

module alutest;

wire[7:0] out;

reg[7:0] a,b;

reg[2:0] opcode;

parameter times=5;

initial

begin

a={$random}%256;

b={$random}%256;

opcode=3'h0;

repeat(times)

begin

#100 a={$random}%256;

b={$random}%256;

opcode=opcode+1;

end

#100 $stop;

end

alu alu(out,opcode,a,b);

endmodule

北航电子电路设计数字部分实验报告

电子电路设计数字部分实验报告 学院: 姓名:

实验一简单组合逻辑设计 实验内容 描述一个可综合的数据比较器,比较数据a 、b的大小,若相同,则给出结果1,否则给出结果0。 实验仿真结果 实验代码 主程序 module compare(equal,a,b); input[7:0] a,b; output equal; assign equal=(a>b)1:0; endmodule 测试程序

module t; reg[7:0] a,b; reg clock,k; wire equal; initial begin a=0; b=0; clock=0; k=0; end always #50 clock = ~clock; always @ (posedge clock) begin a[0]={$random}%2; a[1]={$random}%2; a[2]={$random}%2; a[3]={$random}%2; a[4]={$random}%2; a[5]={$random}%2; a[6]={$random}%2; a[7]={$random}%2; b[0]={$random}%2; b[1]={$random}%2; b[2]={$random}%2; b[3]={$random}%2; b[4]={$random}%2;

b[5]={$random}%2; b[6]={$random}%2; b[7]={$random}%2; end initial begin #100000 $stop;end compare m(.equal(equal),.a(a),.b(b)); endmodule 实验二简单分频时序逻辑电路的设计 实验内容 用always块和@(posedge clk)或@(negedge clk)的结构表述一个1/2分频器的可综合模型,观察时序仿真结果。 实验仿真结果

北航实验报告实验实验

实验三UC-OS移植实验 一、实验目的 在内核移植了uCOS-II 的处理器上创建任务。 二、实验内容 1.运行实验十,在超级终端上观察四个任务的切换。 2. 任务1~3,每个控制“红”、“绿”、“蓝”一种颜色的显示,适当增加OSTimeDly()的时间,且优先级高的任务延时时间加长,以便看清三种颜色。 3.引入一个全局变量BOOLEAN ac_key,解决完整刷屏问题。 4. #define rUTRSTAT0 (*(volatile unsigned *)0x50000010) #define RdURXH0()(*(volatile unsigned char *)0x50000024) 当键盘有输入时在超级终端上显示相应的字符。 三、实验设备 硬件:ARM嵌入式开发平台、用于ARM920T的JTAG仿真器、PC机Pentium100以上。 软件:PC机操作系统Win2000或WinXP、ARM ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。 四、实验原理 所谓移植,指的是一个操作系统可以在某个微处理器或者微控制器上运行。虽然uCOS-II的大部分源代码是用C语言写成的,仍需要用C语言和汇编语言完成一些与处理器相关的代码。比如:uCOS-II在读写处理器、寄存器时只能通过汇编语言来实现。因为uCOS-II在设计的时候就己经充分考虑了可移植性,所以,uCOS-II的移植还是比较容易的。 要使uCOS一工工可以正常工作,处理器必须满足以下要求: 1)处理器的C编译器能产生可重入代码。 2)在程序中可以打开或者关闭中断。 3)处理器支持中断,并A能产生定时中断(通常在10Hz}1000Hz之间)。 4)处理器支持能够容纳一定量数据的硬件堆栈。 5)处理器有将堆栈指针和其它CPU寄存器存储和读出到堆栈(或者内存)的指

北航电子电路设计训练模拟分实验报告

北航电子电路设计训练模拟部分实验报告

————————————————————————————————作者:————————————————————————————————日期:

电子电路设计训练模拟部分实验 实验报告

实验一:共射放大器分析与设计 1.目的: (1)进一步了解Multisim的各项功能,熟练掌握其使用方法,为后续课程打好基础。 (2)通过使用Multisim来仿真电路,测试如图1所示的单管共射放大电路的静态工作点、电压放大倍数、输入电阻和输出电阻,并观察 静态工作点的变化对输出波形的影响。 (3)加深对放大电路工作原理的理解和参数变化对输出波形的影响。 (4)观察失真现象,了解其产生的原因。 图 1 实验一电路图 2.步骤: (1)请对该电路进行直流工作点分析,进而判断管子的工作状态。 (2)请利用软件提供的各种测量仪表测出该电路的输入电阻。 (3)请利用软件提供的各种测量仪表测出该电路的输出电阻。 (4)请利用软件提供的各种测量仪表测出该电路的幅频、相频特性曲线。 (5)请利用交流分析功能给出该电路的幅频、相频特性曲线。 (6)请分别在30Hz、1KHz、100KHz、4MHz和100MHz这5个频点利用示波器测出输入和输出的关系,并仔细观察放大倍数和相位差。 (提示:在上述实验步骤中,建议使用普通的2N2222A三极管,并请注 意信号源幅度和频率的选取,否则将得不到正确的结果。) 3.实验结果及分析: (1)根据直流工作点分析的结果,说明该电路的工作状态。 由simulate->analyses->DC operating point,可测得该电路的静态工作点为:

Verilog HDL实验报告

HDL实验报告 专业电子科学与技术 姓名 学号 指导老师

1 实验一Modelsim仿真软件的使用 1.1 实验目的 (1)熟悉Modelsim 软件; (2)掌握Modelsim 软件的编译、仿真方法; (3)熟练运用Modelsim 软件进行HDL 程序设计开发。 1.2 实验步骤 (1)学习使用Modelsim软件; (2)分析原理及功能; (3)用Verilog HDL编写程序; (4)编写测试程序进行仿真; (4)观察波形,分析仿真结果是否正确。 1.3 实验内容 用Verilog HDL 程序实现一个异或门,Modelsim 仿真,观察效果。 1.4.1 程序 module my_xor(ina,inb,out); input ina,inb; output out; assign out=ina^inb; endmodule module t_xor; reg ina,inb; wire out; initial begin ina=1'b0; forever #20 ina=~ina; end initial begin inb=1'b0; forever #10 inb=~inb; end my_xor tt(.ina(ina),.inb(inb),.out(out)); endmodule

2 实验二简单组合电路设计 2.1 实验目的 (1)掌握基于Modelsim 的数字电路设计方法; (2)熟练掌握HDL 程序的不同实现方法 2.2 实验步骤 (1)分析原理及功能; (2)根据原理用Verilog HDL编写程序; (3)编写测试程序进行仿真; (4)观察波形,分析仿真结果是否正确。 2.3 实验内容 设计一个三人表决器(高电平表示通过) ,实验内容如下: (1)三个人,一个主裁判,两个副裁判; (2)规则:只要主裁判同意,输出结果为通过;否则,按少数服从多数原则决定是否通过。使用Verilog HDL 程序实现上述实验内容,并使用modelsim 仿真(要求:至少使用两种方法实现上述实验内容和testbench)。 2.4.1 程序 方法1: module voter(v0,v1,v2,y); input v0,v1,v2; output y; assign y=v0|(v1&v2); endmodule 方法2: module voter(v0,v1,v2,y); input v0,v1,v2; output reg y; always @(v0,v1,v2) begin if(v0) y=1;

北航计软实验报告一

北航计软实验报告一

————————————————————————————————作者: ————————————————————————————————日期:

计算机软件基础上机实验报告(一) XXXXXX班XXX 1.实验目的 掌握线性表在顺序分配下的插入与删除运算;掌握线性表的链式存储结构;掌握插入排序的方法;并掌握一种产生随机数的方法。 2.实验内容 1.产生1000个0至999间的随机整数,并以产生的次序存入一个数据文件中。 2.编制一个程序,依次实现以下功能: (1)?定义一个有序(非递减)线性表,其最大容量为1000,初始时为空。 (2)?从由1产生的数据文件中依次取前N个随机整数,陆续插入到此线性表中,并要求在每次插入后保持线性表的有序性。最后将此有序线性表打印输出。 (3)?在由(2)产生的线性表中,依在1中产生的次序逐个将元素删除,直至表空为止。 3. 以N=100及N=400分别运行2的程序,并比较它们的运行时间。 4. 编写一个程序,用插入排序依次将1中产生的1000个随机整数链接成有序链表(不改变原随机数在存储空间中的顺序)。 3.源代码与运行结果 #include<stdio.h> #include<stdlib.h> #include /** 1_1 产生1000个0至999间的随机整数,并以产生的次序存入一个数据文件(1_1.txt)中。 **/ main() { FILE *fo=fopen("1_1.txt","w"); int i,j; srand((unsigned)time(0)); for(i=0;i<=999;i++)fprintf(fo,"%d\n",rand()%1000); fclose(fo); printf("1000个随机数已输出至目录下1_1.txt文件\n");

北航自动控制原理实验报告(完整版)

自动控制原理实验报告 一、实验名称:一、二阶系统的电子模拟及时域响应的动态测试 二、实验目的 1、了解一、二阶系统阶跃响应及其性能指标与系统参数之间的关系 2、学习在电子模拟机上建立典型环节系统模型的方法 3、学习阶跃响应的测试方法 三、实验内容 1、建立一阶系统的电子模型,观测并记录在不同时间常数T时的响应曲线,测定过渡过程时间T s 2、建立二阶系统电子模型,观测并记录不同阻尼比的响应曲线,并测定超调量及过渡过程时间T s 四、实验原理及实验数据 一阶系统 系统传递函数: 由电路图可得,取则K=1,T分别取:0.25, 0.5, 1 T 0.25 0.50 1.00 R2 0.25MΩ0.5M Ω1MΩ C 1μ1μ1μ T S 实测0.7930 1.5160 3.1050 T S 理论0.7473 1.4962 2.9927 阶跃响应曲线图1.1 图1.2 图1.3 误差计算与分析 (1)当T=0.25时,误差==6.12%; (2)当T=0.5时,误差==1.32%; (3)当T=1时,误差==3.58% 误差分析:由于T决定响应参数,而,在实验中R、C的取值上可能存在一定误差,另外,导线的连接上也存在一些误差以及干扰,使实验结果与理论值之间存在一定误差。但是本实验误差在较小范围内,响应曲线也反映了预期要求,所以本实验基本得到了预期结果。 实验结果说明 由本实验结果可看出,一阶系统阶跃响应是单调上升的指数曲线,特征有T确定,T越小,过度过程进行得越快,系统的快速性越好。 二阶系统 图1.1 图1.2 图1.3

系统传递函数: 令 二阶系统模拟线路 0.25 0.50 1.00 R4 210.5 C2 111 实测45.8% 16.9% 0.6% 理论44.5% 16.3% 0% T S实测13.9860 5.4895 4.8480 T S理论14.0065 5.3066 4.8243 阶跃响应曲线图2.1 图2.2 图2.3 注:T s理论根据matlab命令[os,ts,tr]=stepspecs(time,output,output(end),5)得出,否则误差较大。 误差计算及分析 1)当ξ=0.25时,超调量的相对误差= 调节时间的相对误差= 2)当ξ=0.5时,超调量的相对误差==3.7% 调节时间的相对误差==3.4% 4)当ξ=1时,超调量的绝对误差= 调节时间的相对误差==3.46% 误差分析:由于本试验中,用的参量比较多,有R1,R2,R3,R4;C1,C2;在它们的取值的实际调节中不免出现一些误差,误差再累加,导致最终结果出现了比较大的误差,另外,此实验用的导线要多一点,干扰和导线的传到误差也给实验结果造成了一定误差。但是在观察响应曲线方面,这些误差并不影响,这些曲线仍旧体现了它们本身应具有的特点,通过比较它们完全能够了解阶跃响应及其性能指标与系统参数之间的关系,不影响预期的效果。 实验结果说明 由本实验可以看出,当ωn一定时,超调量随着ξ的增加而减小,直到ξ达到某个值时没有了超调;而调节时间随ξ的增大,先减小,直到ξ达到某个值后又增大了。 经理论计算可知,当ξ=0.707时,调节时间最短,而此时的超调量也小于5%,此时的ξ为最佳阻尼比。此实验的ξ分布在0.707两侧,体现了超调量和调节时间随ξ的变化而变化的过程,达到了预期的效果。 图2.2 图2.1 图2.3

北航verilog实验报告(全)

目录 实验一 (2) 实验二 (9) 实验三 (21) 实验四 (44)

实验一 实验目的:熟悉硬件开发流程,掌握Modelsim设计与仿真环境,学会简单组合逻辑电路、简单时序逻辑电路设计,不要求掌握综合和综合后仿真。 实验内容:必做实验:练习一、简单的组合逻辑设计 练习二、简单分频时序逻辑电路的设计 选做实验:选做一、练习一的练习题 选做二、7段数码管译码电路 练习一、简单的组合逻辑设计 描述一个可综合的数据比较器,比较数据a 、b的大小,若相同,则给出结果1,否则给出结果0。 实验代码: 模块源代码: module compare(equal,a,b); input a,b; output equal; assign equal=(a==b)?1:0; endmodule 测试模块源代码: `timescale 1ns/1ns `include "./compare.v" module t; reg a,b; wire equal; initial begin a=0; b=0; #100 a=0;b=1; #100 a=1;b=1;

#100 a=1;b=0; #100 a=0;b=0; #100 $stop; end compare m(.equal(equal),.a(a),.b(b)); endmodule 实验波形 练习二、简单分频时序逻辑电路的设计 用always块和@(posedge clk)或@(negedge clk)的结构表述一个1/2分频器的可综合模型,观察时序仿真结果。 实验代码: 模块源代码: module halfclk(reset,clkin,clkout); input clkin,reset; output clkout; reg clkout; always@(posedge clkin) begin if(!reset) clkout=0; else clkout=~clkout; end endmodule 测试模块源代码: `timescale 1ns/100ps `define clkcycle 50 module tt; reg clkin,reset; wire clkout;

北航数字图象处理实验报告

数字图像处理实验报告 实验二图像变换实验 1.实验目的 学会对图像进行傅立叶等变换,在频谱上对图像进行分析,增进对图像频域上的感性认识,并用图像变换进行压缩。 2.实验内容 对Lena或cameraman图像进行傅立叶、离散余弦、哈达玛变换。在频域,对比他们的变换后系数矩阵的频谱情况,进一步,通过逆变换观察不同变换下的图像重建质量情况。 3. 实验要求 实验采用获取的图像,为灰度图像,该图像每象素由8比特表示。具体要求如下: (1)输入图像采用实验1所获取的图像(Lena、Cameraman); (2)对图像进行傅立叶变换、获得变换后的系数矩阵; (3)将傅立叶变换后系数矩阵的频谱用图像输出,观察频谱; (4)通过设定门限,将系数矩阵中95%的(小值)系数置为0,对图像进行反变换,获得逆变换后图像; (5)观察逆变换后图像质量,并比较原始图像与逆变后的峰值信噪比(PSNR)。 (6)对输入图像进行离散余弦、哈达玛变换,重复步骤1-5; (7)比较三种变换的频谱情况、以及逆变换后图像的质量(PSNR)。 4. 实验结果 1. DFT的源程序及结果 J=imread('10021033.bmp'); P=fft2(J); for i=0:size(P,1)-1 for j=1:size(P,2) G(i*size(P,2)+j)=P(i+1,j); end end Q=sort(G); for i=1:size(Q,2) if (i=size(Q,2)*0.95) t=Q(i); end end G(abs(G)

FPGA实验报告北航电气技术实验

FPGA电气技术实践 实验报告 院(系)名称宇航学院 专业名称飞行器设计与工程(航天)学生学号XXXXXXXX 学生姓名XXXXXX 指导教师XXXX 2017年11月XX日

实验一四位二进制加法计数器与一位半加器的设计实验时间:2017.11.08(周三)晚实验编号20 一、实验目的 1、熟悉QuartusII的VHDL的文本编程及图形编程流程全过程。 2、掌握简单逻辑电路的设计方法与功能仿真技巧。 3、学习并掌握VHDL语言、语法规则。 4、参照指导书实例实现四位二进制加法计数器及一位半加器的设计。 二、实验原理 .略 三、实验设备 1可编程逻辑实验箱EP3C55F484C8 一台(包含若干LED指示灯,拨码开关等)2计算机及开发软件QuartusII 一台套 四、调试步骤 1四位二进制加法计数器 (1)参照指导书实例1进行工程建立与命名。 (2)VHDL源文件编辑 由于实验箱上LED指示灯的显示性质为“高电平灭,低电平亮”,为实现预期显示效果应将原参考程序改写为减法器,且”q1<= q1+1”对应改为”q1<= q1-1”,以实现每输入一个脉冲“亮为1,灭为0”。 由于参考程序中的rst清零输入作用并未实现,所以应将程序主体部分的最外部嵌套关于rst输入是否为1的判断,且当rst为1时,给四位指示灯置数”1111”实现全灭,当rst为0时,运行原计数部分。 (3)参照指导书进行波形仿真与管脚绑定等操作,链接实验箱并生成下载文件 (4)将文件下载至实验箱运行,观察计数器工作现象,调试拨动开关查看是否清零。 可以通过改变与PIN_P20(工程中绑定为clk输入的I/O接口)相连导线的另一端所选择的实验箱频率时钟的输出口位置,改变LED灯显示变化频率。 并且对照指导书上对实验箱自带时钟频率的介绍,可以通过改变导线接口转换输入快慢,排查由于clk输入管脚损坏而可能引起的故障。

verilog hdl 实验报告

Verilog HDL数字系统设计 实验报告汇总 任课教师 实验者姓名 学号 实验指导教师

姓名学号 时间地点 实验题目阻塞赋值与非阻塞赋值的区别 一.实验目的与要求 (1)通过实验,掌握阻塞赋值与非阻塞赋值的概念与区别; (2)了解非阻塞赋值和阻塞赋值的不同使用场合; (3)学习测试模块的编写,综合和不同层次的仿真。 二.实验环境 仿真软件: modlsim6.2SE 三.实验内容 阻塞赋值与非阻塞赋值,在教材中已经了解了他们之间在语法上的区别以及综合后所得到的

电路结构上的区别。在always块中,阻塞赋值可以理解为赋值语句是并发执行的。时序逻辑设计中,通常都使用非阻塞赋值语句,而在实现组合逻辑的assign结构中,或者always快结构中都必须采用阻塞赋值语句。 四.系统框图 五.实验波形图 六.实验体会 (1)一开始使用modelsimSE6.2时候不知道建立工作区的方法。后面请教了毕老师才知道如何来建立工作区。 (2)编译时候错误看不懂,细心找才发现‘ ` 两个符号有区别 (3)波形找不到,后来发现时没有放大。 七.代码附录: 源代码:

// ---------- 模块源代码:---------------------- // ------------- blocking.v --------------- module blocking(clk,a,b,c); output [3:0] b,c; input [3:0] a; input clk; reg [3:0] b,c; always @(posedge clk) begin b = a; c = b; $display("Blocking: a = %d, b = %d, c = %d ",a,b,c); end endmodule //------------- non_blocking.v ------------------- module non_blocking(clk,a,b,c); output [3:0] b,c; input [3:0] a; input clk; reg [3:0] b,c; always @(posedge clk) begin b <= a; c <= b; $display("Non_Blocking: a = %d, b = %d, c = %d ",a,b,c); end endmodule 测试模块: // ---------- 测试模块源代码:-------------------------- //------------- compareTop.v -----------------------------

北航电涡流传感器实验报告

电涡流传感器实验报告 38030414蔡达 一、实验目的 1.了解电涡流传感器原理; 2.了解不同被测材料对电涡流传感器的影响。 二、实验仪器 电涡流传感器实验模块,示波器:DS5062CE,微机电源:WD990型,士12V,万用表:VC9804A型,电源连接电缆,螺旋测微仪 三、实验原理 电涡流传感器由平面线圈和金属涡流片组成,当线圈中通以高频交变电流后,在与其平行的金属片上会感应产生电涡流,电涡流的大小影响线圈的阻抗Z,而涡流的大小与金属涡流片的电阻率、导磁率、厚度、温度以及与线圈的距离X有关,当平面线圈、被测体(涡流片)、激励源确定,并保持环境温度不变,阻抗Z只与距离X有关,将阻抗变化转为电压信号V输出,则输出电压是距离X的单值函数。

四. 实验数据及处理 1.铁片 0.5 1 1.52 2.5 3 3.5 电涡流传感器电压位移曲线—铁片 电压/V 位移/mm

0.5 1 1.5 2 2.53 3.5 电涡流传感器电压位移拟合曲线—铁片 电压/V 位移/mm 其线性工作区为0.6——3.4,对该段利用polyfit 进行函数拟合,可得V=-1.0488X-1.2465 2.铜片

电涡流传感器电压位移曲线—铜片 电压/V 位移/mm 2.2 2.4 2.6 2.83 3.2 3.4 3.6 -6-5.95-5.9-5.85 -5.8-5.75-5.7 -5.65-5.6-5.55-5.5电涡流传感器电压位移拟合曲线—铜片 电压/V 位移/mm 其线性工作区为2.4——3.4,对该段利用polyfit 进行函数拟合,可得V= -0.4500X -4.4667

北航17系光电子实验报告实验5讲解

光电子技术实验报告

实验五光电池特性实验 一.实验目的: 1.学习掌握硅光电池的工作原理。 2.学习掌握硅光电池的基本特性。 3.掌握硅光电池基本特性测试方法。 二.实验原理: 光电池是一种不需要加偏置电压就能把光能直接转换成电能的PN结光电器件,按光电池的功用可将其分为两大类:即太阳能光电池和测量光电池,本仪器用的是测量用的硅光电池,其主要功能是作为光电探测,即在不加偏置的情况下将光信号转换成电信号。 图(20)图(21)如图(20)所示为2DR型硅光电池的结构,它是以P型硅为衬底(即在本征型硅材料中掺入三价元素硼或镓等),然后在衬底上扩散磷而形成N型层并将其作为受光面。如图(21)所示当光作用于PN结时,耗尽区内的光生电子与空穴在内建电场力的作用下分别向N区和P区运动,在闭合电路中将产生输出电流IL,且负载电阻RL上产生电压降为U。显然,PN结获得的偏置电压U与光电池输出电流IL与负载电阻RL有关,即U=IL?RL,当以输出电流的IL为电流和电压的正方向时,可以得到如图(22)所示的伏安特性曲线。

图(22)图(23)光电池在不同的光强照射下可以产生不同的光电流和光生电动势,硅光电池的光照特性曲线如图(23)所示,短路电流在很大范围内与光强成线性关系,开路电压随光强变化是非线性的,并且当照度在2000lx时就趋于饱和,因此,把光电池作为测量元件时,应把它当作电流源来使用,不宜用作电压源。 硒光电池和硅光电池的光谱特性曲线如图(25)所示,不同的光电池其光谱峰值的位置不同,硅光电池的在800nm附近,硒光电池的在540nm附近,硅光电池的光谱范围很广,在450~1100nm之间,硒光电池的光谱范围为340~750nm。 图(24)图(25)光电池的温度特性主要描述光电池的开路电压和短路电流随温度变化的情况,由于它关系到应用光电池设备的温度漂移,影响到测量精度或控制精度等主要指标,光电池的温度特性如图(24)所示。开路电压随温度升高而下降的速度较快,而短路电流随温度升高而缓慢增加,因此,当使用光电池作为测量元件时,在系统设计中应考虑到温度的漂移,并采取相应的措施进行补偿。 三.实验所需部件: 两种光电池、各类光源、实验选配单元、数字电压表(4 1/2位)自备、微安表(毫安表)、激光器、照度计(用户选配)。

通过Verilog实现交通灯设计实验报告

电子科技大学 实 验 报 告 一、实验室名称:虚拟仪器实验室 二、实验项目名称:交通灯设计实验 三、实验学时:4学时 四、实验原理

假设交通灯处于南北和东西两条大街的“十”字路口,如图1所示。用FPGA 开发板的LED 灯来模拟红、黄、绿3种颜色信号,并按一定顺序、时延来点亮LED ,如图2所示。图3给出了交通灯的状态转移图。设计使用频率为1Hz 的时钟来驱动电路(注1:仿真时采用1MHz 的时钟来驱动电路),则停留1个时钟可得到1S 的延时,类似停留3个时钟可得到3S 的延时,停留15个时钟可得到15S 的延时(注2:开发板工作时钟为50MHz )。 北 南 西东 图1. 六个彩色LED 可以表示一组交通信号灯 图2. 交通灯状态 南北 东西 红 黄 绿 红 黄 绿 S0 1 0 0 0 0 1 S1 1 0 0 0 1 0 S2 1 0 0 1 0 0 S3 0 0 1 1 0 0 S4 0 1 0 1 0 0 S5 1 0 0 1 0 0

图3. 交通灯的状态转移图 顶层模块 时钟分频模块状态机跳转模块 图4. 交通灯的原理框图 五、实验目的 本实验是有限状态机的典型综合实验,掌握如何使用状态转移图来定义Mealy状态机和Moore状态机,熟悉利用HDL代码输入方式进行电路的设计和仿真的流程,掌握Verilog语言的基本语法。并通过一个交通灯的设计掌握利用EDA软件(Xilinx ISE 13.2)进行HDL代码输入方式的电子线路设计与仿真的详细流程。。 六、实验内容 在Xilinx ISE 13.2上完成交通灯设计,输入设计文件,生成二进制码流文件下载到FPGA开发板上进行验证。 七、实验器材(设备、元器件)

北航eda实验报告

2014-2015-2-G02A3050-1 电子电路设计训练(数字EDA部分) 实验报告 (2015年5月19日) 教学班学号姓名组长签名成绩120311王天然* 120311马璇 120312唐玥 自动化科学与电气工程学院

目录 ( 2015年5月19日).........................................错误!未定义书签。目录 .........................................................错误!未定义书签。实验一、简单组合逻辑和简单时序逻辑............................错误!未定义书签。 简单的组合逻辑设计..................................错误!未定义书签。 实验目的和内容:..................................错误!未定义书签。 实验源代码:......................................错误!未定义书签。 测试模块源代码:..................................错误!未定义书签。 简单分频时序逻辑电路的设计...........................错误!未定义书签。 实验目的和内容:..................................错误!未定义书签。 实验源代码:......................................错误!未定义书签。 实验测试源代码:..................................错误!未定义书签。 (选作)设计一个字节(8位)比较器....................错误!未定义书签。 实验内容:........................................错误!未定义书签。 实验代码:........................................错误!未定义书签。 实验测试源代码:..................................错误!未定义书签。 实验小结.............................................错误!未定义书签。实验二、条件语句和always过程块...............................错误!未定义书签。 实验任务1——利用条件语句实现计数分频时序电路.......错误!未定义书签。 实验要求.........................................错误!未定义书签。 模块的核心逻辑设计...............................错误!未定义书签。 测试程序的核心逻辑设计...........................错误!未定义书签。 仿真实验关键结果及其解释.........................错误!未定义书签。 实验任务2——用always块实现较复杂的组合逻辑电路....错误!未定义书签。

Verilog实验报告

实验报告格式要求 一、实验报告内容包括: (1)实验名称。 (2)实验目的。 (3)实验仪器及编号。写明仪器名称、型号、编号。 (4)实验原理。简单叙述有关实验原理(包括电路图或光路图或实验装置示意图)及测量中依据的的公式,式中各量的物理含义及单位,公式成立所应满足的实验条件等。 (5)实验内容及步骤。根据实验内容及实际的实验过程写明关键步骤和安全注意要点。 (6)实验观测记录。记录原始测量数据、图形等有关原始量,形式上要求整齐规范。 (7)数据处理结果。根据实验要求,采用合适的方法进行数据处理,误差分析,最后写出实际结果。 (8)小结或讨论。内容不限。可以是实验中的现象分析,对实验关键问题的体会,实验的收获和建议,也可解答思考题。 二、书写次序 (1)到(5)是进行实验预习时就应该完成的。(6)在实验中完成。做完实验后再在预习报告基础上完成(7)(8)两项。 完成一个实验,就是一次最基本的科研训练,从预习到写出一个实验报告,每一步都有极其丰富的学习内容,要积极思考,认真对待。

实验(一)简单的组合逻辑设计 实验日期2014-10-31 同组者姓名 一、实验目的 [1] 掌握基本组合逻辑电路的实现方法 [2] 初步了解两种基本组合逻辑电路的生成方法 [3] 学习测试模块的编写 [4] 通过综合和布局布线了解不同层次仿真的物理意义 二、实验仪器 计算机、FPGA开发板 三、实验内容 [1] 在ISE软件环境中进行一次完整的设计流程,并在FPGA开发板上实现与门的功能。 [2] 完成一个可综合的数据比较器的程序。 [3] 完成数据比较器的测试模块。 [4] 发挥部分:设计一个多位(2位)的数据比较器并在FPGA开发板上实现该比较器。 四、实验步骤、分析及结果(在下面写出你的代码) 代码: module compare( input a, input b, output c ); assign c=a&b; endmodule 结果如图所示:

北航惯性导航综合实验一实验报告

实 验一 陀螺仪关键参数测试与分析实验 加速度计关键参数测试与分析实验 二零一三年五月十二日 实验一陀螺仪关键参数测试与分析实验 一、实验目得 通过在速率转台上得测试实验,增强动手能力与对惯性测试设备得感性认识;通过对陀螺仪测试数据得分析,对陀螺漂移等参数得物理意义有清晰得认识,同时为在实际工程中应用陀螺仪与对陀螺仪进行误差建模与补偿奠定基础。 二、实验内容 利用单轴速率转台,进行陀螺仪标度因数测试、零偏测试、零偏重复性测试、零漂测试实验与陀螺仪标度因数与零偏建模、误差补偿实验。 三、实验系统组成 单轴速率转台、MEMS 陀螺仪(或光纤陀螺仪)、稳压电源、数据采集系统与分析系统。

四、实验原理 1.陀螺仪原理 陀螺仪就是角速率传感器,用来测量载体相对惯性空间得角速度,通常输出与角速率对应得电压信号。也有得陀螺输出频率信号(如激光陀螺)与数字信号(把模拟电压数字化)。以电压表示得陀螺输出信号可表示为: (1-1)式中就是与比力有关得陀螺输出误差项,反映了陀螺输出受比力得影响,本实验不考虑此项误差。因此,式(1-1)简化为 (1-2)由(1-2)式得陀螺输出值所对应得角速度测量值: (1-3) 对于数字输出得陀螺仪,传感器内部已经利用标度因数对陀螺仪模拟输出进行了量化,直接输出角速度值,即: (1-4)就是就是陀螺仪得零偏,物理意义就是输入角速度为零时,陀螺仪输出值所对应得角速度。且 (1-5) 精度受陀螺仪标度因数、随机漂移、陀螺输出信号得检测精度与得影响。通常与表现为有规律性,可通过建模与补偿方法消除,表现为随机特性,可通过信号滤波方法抵制。因此,准确标定与就是实现角速度准确测量得基础。 五、陀螺仪测试实验步骤 1)标度因数与零偏测试实验 a、接通电源,预热一定时间; b、陀螺工作稳定后,测量静止情况下陀螺输出并保存数据;

北航电气实验FPGA实验报告

北京航空航天大学电气实验报告 FPGA实验 张天 130325班 学号:13031220

一.实验目的 略 二.实验要求 略 三.实验设备 略 四.实验内容 略 五.实验实例 1.实例6-1 思考题1:输出信号q3q2q1绑定接口电路的七段数码管或米字型数码管或LED点 阵显示? 答: 思考题2:怎样修改成4位二进制减法计数器,具有清零,启动控制功能等? 答: 思考题3:把计数器修改成2位或更多位十进制计数功能,再用七段数码管进行显示等? 答: 2.实例6-2 思考题:一位半加器电路采用VHDL语言实验 答: library ieee; use ieee.std_logic_1164.all; use iee.std_logic_unsigned.all; entity halfadd is port (a,b;in std_logic sum,carry; out std_logic) end entity halfadd; architecture halfadd is begin sum<=a and(not b)+b and (not a); carry<= a and b; end architecture halfadd; 六.实验过程 我们组做的是一个利用led点阵规律亮灭变化形成字体,并且字体产生变化,形成“自动化?”的样子,实现图片如下图:

1.实验分析: 实验设计思路: 本实验的设计思路是利用led灯的 辉光效应,利用逐行扫描,在高频情况下就会显示所有行的亮灯,进而形成汉字,并且有时钟计数程序,当时钟数字达到规定值(本实验为111111111b)时,跳转到下一个状态,显示第二个憨子。每个汉字的颜色由led灯决定,改led矩阵有红绿两种led灯,因此有红绿橙三种颜色显示。 2.实现过程 对设计思路的实现并非一帆风顺,最初编写的时候遇到了一些问题。首先,定义输入输出角是个繁琐的事情(需要定义40+次,每次必须手动),另外,在程序编写过程中,也出现了一些逻辑错误,对于错误,我们仔细逐条语句分析,最终解决了错误,解决过程中也加深了对FPGA的语言逻辑及硬件结构的理解。 七.FPGA使用心得 在学习FPGA过程中,我获得了很多收获。首先,由于有单片机的基础,上手过程并不是十分复杂,对于输入输出的理解我没有遇到太多阻碍。这次学习也验证了我具有短时间内掌握一款新型的芯片的能力。学习过程中最大的困难就是VDHL语言的编写。我们以前有c语言的基础,不过学习这种新的语言还是花出了不少时间与精力,现在可以说基本掌握的VDHL的基本写法和思路,能运 用到需要的程序中来。另外,调试的过程能极强地加大对程序的理解及逻辑的构建,在调试中,逐渐明白了以前不懂的东西,对FPGA的工作原理的理解更加透彻了。 不了解的人可能会把FPGA当做一种单片机,但其实,相比于单片机,FPGA 是有很多优势的。其无固定的硬件结构使其具有远超单片机的灵活性,另外,它的编程方法可以同步进行多个process 使其能同步处理多个进程,因此,它的

北航惯性导航综合实验四实验报告

基于运动规划的惯性导航系统动态实验 GAGGAGAGGAFFFFAFAF

二零一三年六月十日 实验4.1 惯性导航系统运动轨迹规划与设计实验一、实验目的 为进行动态下简化惯性导航算法的实验研究,进行路径和运动状态规划,以验证不同运动状态下惯导系统的性能。通过实验掌握步进电机控制方法,并产生不同运动路径和运动状态。 二、实验内容 学习利用6045B 控制板对步进电机进行控制的方法,并控制电机使运动滑轨产生定长运动和不同加速度下的定长运动。 三、实验系统组成 USB_PCL6045B 控制板(评估板)、运动滑轨和控制计算机组成。 四、实验原理 IMU安装误差系数的计算方法 GAGGAGAGGAFFFFAFAF

USB_PCL6045B 控制板采用了USB 串行总线接口通信方式,不必拆卸计算机箱就可以在台式机或笔记本电脑上进行运动控制芯片PCL6045B 的学习和评估。 USB_PCL6045B 评估板采用USB 串行总线方式实现评估板同计算机的数据交换,由评估板的FIFO 控制回路完成步进电机以及伺服电机的高速脉冲控制,任意 2 轴的圆弧插补,2-4 轴的直线插补等运动控制功能。USB_PCL6045B 评估板上配置了全部PCL6045B 芯片的外部信号接口和增量编码器信号输入接口。由 USB_PCL6045B 评估测试软件可以进行PCL6045B 芯片的主要功能的评估测试。 GAGGAGAGGAFFFFAFAF

图4-1-1USB_PCL6045B 评估板原理框图如图4-1-1 所示,CN11 接口主要用于外部电源连接,可以选择DC5V 单一电源或DC5V/24V 电源。CN12 接口是USB 信号接口,用于USB_PCL6045B 评估板同计算机的数据交换。 USB_PCL6045B 评估板已经完成对PCL6045B 芯片的底层程序开发和硬件资源与端口的驱动,并封装成156 个API 接口函数。用户可直接在VC 环境下利用API 接口函数进行编程。 五、实验内容 GAGGAGAGGAFFFFAFAF

verilog实验之密码箱实验报告

Verilog实现密码箱 1.功能概述 小脚丫开发板的有4位拨码开关,可以表示数字0-9,有两个七段数码管,所以密码设为两位(00—99),初始密码00,利用四位拨码开关(sw)输入密码,,按下个位确认按键(low),在数码管上显示个位数字;再次输入密码,按下十位确认按键(high),在数码管上显示十位数字。按下确认按键(enter),比较密码正误,若正确,实现开锁功能,用led8灯亮表示;错误,实现报错功能,用led1灯亮表示;连续错三次,实现警报功能,用8个灯全亮表示,此时只有重置(rst)才能重新输入密码。初始密码为21。为保证安全性,只有在开锁状态下,才可修改密码,修改拨码开关数值,按下个位确认按键(low),设置新密码个位,再次修改拨码开关数值,按下个位确认按键(high),设置新密码十位(实际上两个位密码修改与输入顺序不影响)。再按下重置键(rst),即可重新输入密码。同时在使用按键时,注意到了消抖。 2.效果展示 密码错误

密码正确

修改后密码正确

视频展示(双击播放) 3.代码分析 一、密码显示在数码管上always@(*) //数码管显示控制模块

begin case(code_low) 4'd0:seg_led1=9'b000111111;//数码管1显示0 4'd1:seg_led1=9'b000000110;//1 4'd2:seg_led1=9'b001011011;//2 4'd3:seg_led1=9'b001001111;//3 4'd4:seg_led1=9'b001100110;//4 4'd5:seg_led1=9'b001101101;//5 4'd6:seg_led1=9'b001111101;//6 4'd7:seg_led1=9'b000000111;//7 4'd8:seg_led1=9'b001111111;//8 4'd9:seg_led1=9'b001101111;//9 default:seg_led1=9'b100111111;//0 endcase case(code_high) 4'd0:seg_led2=9'b000111111;//数码管2显示0 4'd1:seg_led2=9'b000000110;//1 4'd2:seg_led2=9'b001011011;//2 4'd3:seg_led2=9'b001001111;//3 4'd4:seg_led2=9'b001100110;//4 4'd5:seg_led2=9'b001101101;//5 4'd6:seg_led2=9'b001111101;//6

相关文档