北航eda实验报告数字部分

北航eda实验报告数字部分
北航eda实验报告数字部分

Verilog数字电路设计

实验报告

院系:

组员:

年月日

目录

分组概况 (3)

分组概况 (3)

实验概况 (4)

实验感想 (5)

实验内容 (9)

实验一 (9)

实验二 (15)

实验三 (25)

实验四 (33)

组长:

主要负责各次实验的总体进程,以及选做实验的代码编译。在实验报告中负责统筹规划及后期编排。

组员:

负责各次实验必做实验源代码的录入及仿真。在实验报告中负责报告前期录入,包括各次实验的简要内容、步骤等。

本课程共安排四次实验,其内容是:

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

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

选做一、设计一个字节(8位)的比较器

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

练习五、用always块实现较复杂组合逻辑电路

选做一、利用10MB时钟设计一个单周期波形

选做二、运用always块设计一个8路数据选择器

3、练习四、阻塞赋值与非阻塞赋值的区别

练习六、在Verilog中使用函数

练习七、在Verilog中使用任务

练习题5、综合一个可以计算正整数平方、立方、阶乘的函数思考题3、在blocking模块中实现对两种写法的仿真

4、必做一、设计一个串行数据检测器

必做二、楼梯灯——基本任务

选做一、楼梯灯——扩展任务

三、感想

通过这4次的实验,我们基本熟悉Modelsim 软件,掌握了Modelsim 软件的编译、仿真方法。同时在编写程序的过程中,加深了我们对课上所讲的语法的认识以及学会了测试模块的编写。经过实验一,我们掌握了基本组合逻辑电路,基本时序电路;经过实验二,我们掌握条件语句在简单时序模块设计中的使用、在Verilog模块中应用计数器以及用always实现较大组合逻辑电路;经过实验三,我们掌握阻塞赋值与非阻塞赋值的概念与区别,了解函数的定义和在模块设计中的使用,掌握任务在verilog模块设计中的应用;经过实验四,我们掌握利用有限状态机实现一般时序逻辑分析的方法。在实验过程中,我们也遇到过程序编写以及软件仿真上的问题。程序编写时,要注意一些细节,比如符号,全角与半角等。软件仿真过程中,我们出现过程序无错,但添加波形运行后,却没有波形的情况,最后上网百度,找到了解决方法。实验总体来说,都比较顺利。对于难度较大的实验四,只要思路清晰,考虑到所有的情况,就能做出来。

四、实验内容

第一次实验课:

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

实验目的:

(1)掌握基本组合逻辑电路的实现方法

(2)初步了解两种基本组合逻辑电路的生成方法

(3)学习测试模块的编写

(4)通过综合和布局布线了解不同层次仿真的物理意义

实验原理:

实验代码提供的是一个可综合的数据比较器。从语句中可以看出是比较数据a,b的结果,结果相同输出1,否则输出0.测试模块用于检测模块设计是否正确,给出输入信号,观察模块的内部信号和输出信号以确定设计是否正确。综合就是把compare.v文件送到synplify或其他综合器进行处理,启动综合器编译。布局布线就是把综合后的另一种文件(EDIF),在布线工具控制下进行处理,启动布局布线的编译。

实验内容:

模块源代码的组合逻辑仿真与测试

实验代码:

module compare(equal,a,b);

inputa,b;

output equal;

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

endmodule

实验仿真:

测试程序:

`timescale 1ns/1ns

`include "./compare.v"

module t;

rega,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

仿真结果:

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

实验目的:

(1)掌握最基本时序电路的实现方法

(2)学习时序电路测试模块的编写

(3)学习综合和不同层次的仿真

实验原理:

对于组合逻辑电路,可综合成具体电路结构的时序逻辑电路也有准确的表达方式。在可综合的模型中,通常用always块或者@(posedgeclk)或(negedgeclk)结构表达时序逻辑。实验为二分之一分频器模型。

在always块中,被赋值信号都必须定义为reg型,对于reg型数据,如果未对它进行赋值,仿真工具会认为它是不定态的。为了正确观察结果,在可综合模块中,常定义一个复位信号reset,其为低电平时对寄存器进行复位。

实验内容:

分频时序电路的仿真测试

实验代码:

modulehalf_clk(reset,clk_in,clk_out);

inputclk_in,reset;

outputclk_out;

regclk_out;

always @(posedgeclk_in)

begin

if(!reset) clk_out=0;

elseclk_out=~clk_out;

end

endmodule

实验仿真:

测试程序:

`timescale 1ns/100ps

`define clk_cycle 50

module top;

reg clk,reset;

wire clk_out;

always #`clk_cycle clk=~clk;

initial

begin

clk=0;

reset=1;

#10 reset=0;

#110 reset=1;

#100000 $stop;

end

half_clk m0(.reset(reset),.clk_in(clk),.clk_out(clk_out));

endmodule

仿真结果:

选做一设计一个字节(8位)比较器

实验内容:

比较两个字节的大小,若a[7:0]大于b[7:0],则输出高电平,否则输出低电平。

实验代码:

module compare8(equal,a,b);

input [7:0]a,b;

output equal;

reg equal;

always@(a or b)

if(a>b)

equal=1;

else

equal=0;

endmodule

实验仿真:

测试程序:

`timescale 1ns/1ns

`include "./compare8.v"

module test8;

reg [7:0]a;

reg [7:0]b;

wire equal;

initial

begin

a=8'b10000000;

b=8'b00000000;

#100 a=8'b00001000;b=8'b00001111;

#100 a=8'b00001111;b=8'b00011111;

#100 a=8'b11111111;b=8'b11111111;

#100 a=8'b10101010;b=8'b00001111;

#100 $stop;

end

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

endmodule

仿真结果:

第二次实验课

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

实验目的:

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

(2)学习在Verilog模块中应用计数器

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

实验原理:

在可综合的Verilog HDL模型中,常用的条件语句有if …else和case…

endcase两种结构,用法和C语言相似。

1. if语句

(1)i f(表达式)语句

(2) if(表达式)语句1

else语句2

(3)i f(表达式1)语句1;

else if(表达式2)语句2;

else if(表达式3)语句3;

……

2. case语句

(1)case(表达式)endcase

(2)casez(表达式) endcase

(3)casex(表达式) endcase

前者用于不太复杂的分支关系,实际编写模块时常用的是后者。实验代码是一个可综合风格的分频器,可将10M时钟分频为500K,基本原理和二分之一分频器类似,但需要定义一个计数器以准确获得1/20分频。

实验内容:

进行所给代码计数分频器的仿真测试并观察输出波形

实验代码:

modulefdivsion(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==9)

begin

j<=0;

F500K<=~F500K;

end

else

j<=j+1;

end

endmodule

实验仿真:

测试程序:

`timescale 1ns/100ps

`defineclk_cycle 50

moduledivision_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

fdivsion m0(.RESET(RESET),.F10M(F10M),.F500K(F500K_clk));

endmodule

仿真结果:

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

实验目的:

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

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

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

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

实验原理:

(1)自触发always块:

例:采用非阻塞赋值的自触发振荡器

module osc2(clk);

outputclk;

regclk;

initial #10 clk=0;

always @(clk) #10 clk<=~clk;

endmodule

@(clk)的第一次触发之后,非阻塞赋值的RHS表达式便计算出来,并把值赋给LHS的时间并安排在更新事件队列中。在非阻塞赋值更新事件队列被激活之前,又遇到了@(clk)触发语句,并且always块再次对clk的值变化产生反应。当非阻塞

LHS的值在同一时刻被更新时,@(clk)再一次触发。

本实验示例中使用了电平敏感的always块,所谓电平敏感的触发条件:@后的括号内电平里表中的任何一个电平发生变化(与时序逻辑不同,它在@后的括号内没有沿敏感关键词,如posedge或negedge),就能触发always块的动作。

(2)assign与always

使用assign结构来实现组合逻辑电路,如果逻辑关系比较复杂,不容易理解语句的功能,而适当采用always来设计组合逻辑,使源代码语句的功能容易理解。

同一组合逻辑电路分别用always块和连续赋值语句assign描述时,代码的形式大相径庭,但在always中,若适当运用default(在case结构中)和else(在if…else结构中)语句时,通常可以综合为纯组合逻辑,尽管被赋值的变量一定要定义为reg型;若不使用default或else对默认项进行说明,则易生成意想不到的锁存器,这一点一定注意!

实验代码:

`define plus 3'd0

`define minus 3'd1

`define band 3'd2

`definebor 3'd3

`defineunegate 3'd4

modulealu(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"

moduleaultest;

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 alu1(out,opcode,a,b);

endmodule

仿真结果:

选做一、利用10MB时钟设计一个单周期波形

实验内容:

利用原有代码,自己编写模块源代码和测试模块代码,利用10M时钟,设计一个单周期形状的周期波形

实验代码:

module fdivision2(RESET,clk,out);

inputclk,RESET;

output out;

reg out;

reg [15:0]j;

always @ (posedgeclk)

if (!RESET)

begin

out<=0;

j<=0;

end

else

begin

if(j==199)

begin

j<=j+1;

out<=~out;

end

else

begin

if(j==299)

begin

j<=j+1;

out<=~out;

end

else

if(j==499)

j<=0;

else

j<=j+1;

end

end

endmodule

实验仿真:

测试程序:

`timescale 1ns/100ps

`defineclk_cycle 50

modulefdivision_top;

regclk,RESET;

wireout_clk;

always #`clk_cycleclk=~clk;

initial

begin

RESET=1;

clk=0;

#1000 RESET=0;

#1000 RESET=1;

#100000 $stop;

end

fdivision2fdivision(.RESET(RESET),.clk(clk),.out(out_clk));

endmodule

仿真结果:

选做二、用always块实现较复杂的组合逻辑电路

实验内容:

运用always块设计一个8路数据选择器。要求:每路输入数据与输出数据均为4位2进制数,当选择开关(至少3位)或输入数据变化时,输出数据也相应的变化。

实验代码:

module lianxi4(out,opcode,a,b,c,d,e,f,g,h);

output[3:0] out;

reg[3:0] out;

input[2:0] opcode;

input[3:0] a,b,c,d,e,f,g,h;

always@(opcode or a or b or c or d or e or f or g or h)

begin

case(opcode)

3'd0:out=a;

3'd1:out=b;

3'd2:out=c;

3'd3:out=d;

3'd4:out=e;

3'd5:out=f;

3'd6:out=g;

3'd7:out=h;

endcase

end

endmodule

实验仿真:

测试程序:

`timescale 1ns/1ns

`include "./lianxi4.v"

module lianxi4_t;

wire[3:0] out;

reg[3:0] a,b,c,d,e,f,g,h;

reg[2:0] opcode;

parameter times=8;

initial

begin

a={$random}%16;

b={$random}%16;

c={$random}%16;

d={$random}%16;

e={$random}%16;

f={$random}%16;

g={$random}%16;

h={$random}%16;

opcode=3'b0;

repeat(times)

begin

#100 a={$random}%16; b={$random}%16; c={$random}%16; d={$random}%16; e={$random}%16; f={$random}%16; g={$random}%16; h={$random}%16; opcode=opcode+1;

仿真结果:

第三次实验课

练习四阻塞赋值与非阻塞赋值的区别

实验目的:

(1)通过实验,掌握阻塞赋值与非阻塞赋值的概念与区别;

(2)了解非阻塞与阻塞赋值的不同使用场合;

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

实验原理:

非阻塞赋值方式:在语句块中,上面语句所赋的变量值不能立即就为下面的语句所用;块结束后才能完成这次赋值操作,而所赋的变量值是上一次赋值所得;在编写可综合的时序逻辑模块时,这是最常用的赋值方法。

阻塞赋值方式:赋值语句执行完后,块才结束;被赋的值才赋值语句执行完后立刻就改变;在时序逻辑中使用时,可能会产生意想不到的结果。

在always块中,阻塞赋值可以理解为赋值语句是顺序执行的,而非阻塞赋值可以理解为赋值语句是并发执行的。在时序逻辑设计中,通常使用非阻塞赋值语句,而在实现组合逻辑的assign结构中,或者always块结构中都必须采用阻塞赋值语句。

实验代码:

module blocking(clk,a,b,c);

output[3:0] b,c;

input [3:0] a;

inputclk;

reg [3:0] b,c;

always@(posedgeclk)

begin

b=a;

c=b;

$display("blocking:a=%d,b=%d,c=%d.",a,b,c);

end

endmodule

modulenonblocking(clk,a,b,c);

output[3:0] b,c;

input [3:0] a;

inputclk;

reg [3:0] b,c;

always@(posedgeclk)

begin

b<=a;

c<=b;

$display("nonblocking:a=%d,b=%d,c=%d.",a,b,c);

end

endmodule

实验仿真:

测试程序:

`timescale 1ns/100ps

`include"./blocking.v"

`include"./nonblocking.v"

modulecomparetop;

wire [3:0] b1,c1,b2,c2;

reg[3:0] a;

regclk;

initial

begin

clk=0;

forever #50 clk=~clk;

end

initial

begin

a=4'h3;

$display("_");

#100 a=4'h7;

$display("_");

#100 a=4'hf;

$display("_");

#100 a=4'ha;

$display("_");

#100 a=4'h2;

$display("_");

$stop;

end

nonblockingnonblocking(clk,a,b2,c2);

blocking blocking(clk,a,b1,c1);

endmodule

测试结果:

思考题3在blocking模块中实现对两种写法的仿真

实验内容:

在blocking模块中按如下两种写法,仿真与综合的结果会有什么样的变化?做出仿真波形。

实验代码:

module blocking1(clk,a,b,c); output[3:0] b,c;

input [3:0] a;

inputclk;

reg [3:0] b,c;

always@(posedgeclk)

begin

c=b;

b=a;

end

endmodule

module blocking2(clk,a,b,c); output[3:0] b,c;

input [3:0] a;

inputclk;

reg [3:0] b,c;

always@(posedgeclk) b=a; always@(posedgeclk) c=b; endmodule

实验仿真:

测试程序:

`include"./blocking1.v"

`include"./blocking2.v" module top;

wire [3:0] b1,c1,b2,c2;

reg[3:0] a;

regclk;

initial

begin

clk=0;

forever #50 clk=~clk;

end

initial

begin

a=4'h3;

$display("_");

#100 a=4'h7;

$display("_");

#100 a=4'hf;

$display("_");

#100 a=4'ha;

$display("_");

#100 a=4'h2;

$display("_");

$stop;

end

blocking2 blocking2(clk,a,b2,c2);

blocking1 blocking1(clk,a,b1,c1);

endmodule

测试结果:

练习六在Verilog HDL中使用函数

实验目的:

(1)了解函数的定义和在模块设计中的使用;

(2)了解函数的综合性问题;

(3)了解许多综合器不能综合复杂的算术运算。

实验原理:

与一般的程序设计语言一样,Verilog HDL中也可使用函数以适应对不同变量采取同一种运算的操作。Verilog HDL函数在综合时被理解成具有独立运算功能的电路,每调用一次函数相当于改变这部分电路的输入以得到相应的计算结果。函数的目的是返回一个用于表达式的值。

(1)函数定义

Function<返回值的类型或范围>(函数名);

<端口说明语句>

<变量类型说明语句>

Begin

<语句>

……

End

Endfuction

(2)函数调用

<函数名>(<表达式>,…<表达式>)

实验内容:

采用同步时钟触发运算的执行,每个clk时钟周期都会执行一次运算,并且在测试模块中,通过调用系统任务$display及在时钟的下降沿显示每次计算的结果。

实验代码:

moduletryfunct(clk,n,result,reset);

output [31:0] result;

input [3:0] n;

EDA实验报告

实验一计数器设计 一、实验目的 计数器是实际中最为常用的时序电路模块之一,本实验的主要目的是掌握使用HDL描述计数器类型模块的基本方法。 二、实验仪器与器材 1.EDA开发软件一套 2.微机一台 3.实验开发系统一台 4.其他器材与材料若干 三、实验说明 计数器是数字电路系统中最重要的功能模块之一,设计时可以采用原理图或HDL语言完成。下载验证时的计数时钟可选连续或单脉冲,并用数码管显示计数值。 四、实验要求 1.设计一个带有计数允许输入端、复位输入端和进位输入端的十进制计数器。 2.编制仿真测试文件,并进行功能仿真。 3.下载并验证计数器功能。 4.为上述设计建立元件符号。 5.在上述基础上设计计数器。 五、实验结果

十进制计数器程序: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity counter10 is port(en,reset,clk:in std_logic; q:buffer std_logic_vector(3 downto 0); co:out std_logic); end counter10; architecture behav of counter10 is begin process(clk,en) begin if clk'event and clk='1' then if reset='1' then q<="0000"; elsif en='1' then if q<"1001" then q<=q+'1'; else q<="0000"; end if; end if; end if; end process;

数字电子钟课程设计实验报告

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计任务书2016/2017 学年第一学期 学生姓名:张涛学号: 李子鹏学号: 课程设计题目:数字电子钟的设计 起迄日期:2017年1月4日~2017年7月10日 课程设计地点:科学楼 指导教师:姚爱琴 2017年月日 课程设计任务书

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计开题报告2016/2017 学年第一学期 题目:数字电子钟的设计 学生姓名:张涛学号: 李子鹏学号:

指导教师:姚爱琴 2017 年 1 月 6 日 中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计说明书2016/2017 学年第二学期 题目:数字电子钟的设计 学生姓名:张涛学号: 李子鹏学号: 指导教师:姚爱琴 2017 年月日

目录 1 引言 (6) 2 数字电子钟设计方案 (6) 2.1 数字计时器的设计思想 (6) 2.2数字电路设计及元器件参数选择 (6) 2.2.2 时、分、秒计数器 (7) 2.2.3 计数显示电路 (8) 2.2.5 整点报时电路 (10) 2.2.6 总体电路 (10) 2.3 安装与调试 (11) 2.3.1 数字电子钟PCB图 (11) 3 设计单元原理说明 (11) 3.1 555定时器原理 (12) 3.2 计数器原理 (12) 3.3 译码和数码显示电路原理 (12) 3.4 校时电路原理 (12) 4 心得与体会 (12) 1 引言 数字钟是一种用数字电子技术实现时,分,秒计时的装置,具有较高的准确性和直观性等各方面的优势,而得到广泛的应用。此次设计数字电子钟是为了了解数字钟的原理,在设计数字电子钟的过程中,用数字电子技术的理论和制作实践相结合,进一步加深数字电子技术课程知识的理解和应用,同时学会使用Multisim电子设计软件。 2数字电子钟设计方案 2.1 数字计时器的设计思想 要想构成数字钟,首先应选择一个脉冲源——能自动地产生稳定的标准时间脉冲信号。而脉冲源产生的脉冲信号地频率较高,因此,需要进行分频,使得高频脉冲信号变成适合于计时的低频脉冲信号,即“秒脉冲信号”(频率为1Hz)。经过分频器输出的秒脉冲信号到计数器中进行计数。由于计时的规律是:60秒=1分,60分=1小时,24小时=1天,就需要分别设计60进制,24进制计数器,并发出驱动信号。各计数器输出信号经译码器、驱动器到数字显示器,是“时”、“分”、“秒”得以数字显示出来。 值得注意的是:任何记时装置都有误差,因此应考虑校准时间电路。校时电路一般

EDA实验报告

目录 第一部分实验开发系统概述及使用说明.............................................................. 1第一章EDA实验系统 ....................................................................................... 1第二章EDA/SOPC实验系统 ............................................................................ 7第二部分实验部分............................................................................................ 10实验一EDA工具基本操作与应用 ........................................................... 10实验二计数器设计..................................................................................... 24实验三串入/并出移位寄存器实现 ........................................................... 26实验四四人抢答器设计............................................................................. 28实验五序列检测器设计............................................................................. 29实验六DDS信号源的设计........................................................................ 30实验七交通灯控制器设计......................................................................... 31实验八数字钟设计..................................................................................... 32实验九出租车计费器设计......................................................................... 33实验十频率计的实现................................................................................. 34附录——FPGA接口对照表 ............................................................................ 35

EDA设计II实验报告——多功能数字钟

『EDA设计II』 课程实验报告 姓名 学号 学院 指导教师 时间 2011年 05月

多功能数字钟 摘要:本实验利用Quartus II软件设计多功能数字钟并下载到Smart SOPC实验系统,实现校分、校时、清零、保持和整点报时等多种基本功能,以及闹钟等附加功能。本实验首先通过Quartus II 软件对各模块进行原理图设计,并进行仿真调试,最后下载至实验平台验证其功能。 关键词:多功能数字钟Quartus II软件仿真封装校分校时清零保持整点报时闹钟 Abstract:The experiment is to design a multi-purpose digital clock by Quartus II and then download to the test system of Smart SOPC. It can realize many functions such as minute adjusting, hour adjusting, resetting, keeping and reporting time on integral hour. Apart from this, it can also be used as a alarm clock. First of all, we design the schematic diagram of every part. In addition, we simulate through Quartus II. At last, we download it to the tests platform and test the function. Key words:multi-purpose digital clock Quartus II simulate seal minute- adjusting hour adjusting resetting keeping reporting time on integral hour alarm clock

EDA实验报告

EDA 实验报告 实验一:组合电路的设计 实验内容是对2选1多路选择器VHDL 设计,它的程序如下: ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT; BEGIN d <= a AND (NOT S) ; e <= b AND s ; y <= d OR e ; END ARCHITECTURE one ; Mux21a 仿真波形图 以上便是2选1多路选择器的VHDL 完整描述,即可以看成一个元件mux21a 。mux21a 实体是描述对应的逻辑图或者器件图,图中a 和b 分别是两个数据输入端的端口名,s 为通道选择控制信号输入端的端口名,y 为输出端的端口名。Mux21a 结构体可以看成是元件的内部电路图。最后是对仿真得出的mux21a 仿真波形图。 Mux21a 实体 Mux21a 结构体

实验二:时序电路的设计 实验内容D 触发器的VHDL 语言描述,它的程序如下: LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ; ARCHITECTURE bhv OF DFF1 IS BEGIN PROCESS (CLK) BEGIN IF CLK'EVENT AND CLK = '1' THEN Q <= D ; END IF; END PROCESS ; END bhv; D 触发器的仿真波形图 最简单并最具代表性的时序电路是D 触发器,它是现代可编程ASIC 设计中最基本的时序元件和底层元件。D 触发器的描述包含了VHDL 对时序电路的最基本和典型的表达方式,同时也包含了VHDL 中许多最具特色的语言现象。D 触发器元件如上图所示,其在max+plus2的仿真得出上面的波形 D 触发器

eda数字时钟实验报告

EDA数字时钟电工电子实习 实验报告 姓名 班级 学号20

一、实验目的: 1、掌握多位计数器相连的设计方法。 2、掌握十进制、六十进制和二十四进制计数器的设计方法。 3、巩固数码管的驱动原理及编程方法。 4、掌握CPLD技术的层次化设计方法。 二、实验要求: 基本要求:具有时、分、秒计数显示功能,以二十四小时循环计时。 扩展要求:具有整点报时功能。 三、实验原理: 计数时钟由模60秒计数器、模60分计数器、模24小时计数器、蜂鸣器(用于整点报时)、分/时设定模块、输出显示模块构成,秒计数模块的进位输出为分钟计数模块的进位输入,分钟计数模块的进位输出为小时计数模块的进位输入。 74163功能简介:

图1 图2 由图1可知,74163的脉冲上升沿的时候工作。 四、实验过程

1.模60计数器(如图3) 图3 由74163实现计数功能,第一片74163实现10进制,即做0-9的循环,9即二进制的1001,化简可得当q[0]与q[3]同时为1的时候进行清零。第二片74163实现6进制,即做0-5的循环,5即二进制的111,化简可得当q[4]与q[6]同时为1的时候进行清零,同时第一片74163的进位端作为第二片的脉冲端。这样就可实现60进制。60进制计数器用于秒计数器和分计数器,秒个位的进位端作为秒十位的脉冲端秒十位的进位端作为分个位的脉冲端,分个位的进位端作为分十位的脉冲端。 2.模24计数器(如图4) 图4 分十位的进位端作为时个位的脉冲端,时个位的进位端作为时十位的脉冲端。因为24进制的特殊性,当十位是0和1的时候,个位做十进制循环,即0-9,9的二进制为1001;当十位是2的时候,个位做0-3的循环。而十位做0-2的循环。2的二进制为0010,3的二进制为0011。所以第一片74163不仅要在q[14]与q[17]同时为1的时候清零,还要在第二片74163的q[19]、第一片的q[14]、q[15]同时为1(即23时)做清零。第二片是3进制,在q[19]=1的时候进行清零。

EDA设计课程实验报告数码管动态显示实验报告

EDA设计课程实验报告 实验题目:数码管动态显示实验 学院名称: 专业:电子信息工程 班级: 姓名:高胜学号 小组成员: 指导教师: 一、实验目的 学习动态扫描显示的原理;利用数码管动态扫描显示的原理编写程序,实现自己的学号的显示。 二、设计任务及要求

1、在SmartSOPC实验箱上完成数码管动态显示自己学号的后八个数字。 2、放慢扫描速度演示动态显示的原理过程。 三、系统设计 1、整体设计方案 数码管的八个段a,b,c,d,e,f,g,h(h是小数点)都分别连接到SEG0~SEG7,8个数码管分别由八个选通信号DIG0~DIG7来选择,被选通的数码管显示数据,其余关闭。如果希望8个数码管显示希望的数据,就必须使得8个选通信号DIG0~DIG7分别被单独选通,并在此同时,在段信号输入口SEG0~SEG7加上该对应数码管上显示的数据,于是随着选通信号的扫描就能实现动态扫描显示的目的。虽然每次只有1个数码管显示,但只要扫描显示速率足够快,利用人眼的视觉余辉效应,我们仍会感觉所有的数码管都在同时显示。 2、功能模块电路设 (1)输入输出模块框图(见图1) 图1 (2)模块逻辑表达(见表1) 表1(数码管显示真值表) clk_1k dig seg ↑01111111 C0 ↑10111111 F9

注:数码管显示为01180121 (3)算法流程图(见图2) (4)Verilog源代码 module scan_led(clk_1k,d,dig,seg); //模块名scan_led input clk_1k; //输入时钟 input[31:0] d; //输入要显示的数据output[7:0] dig; //数码管选择输出引脚

EDA实验实验报告

数字eda实验实验报告 学院:计算机科学与工程学院专业:通信工程学 号: 0941903207 姓名:薛蕾指导老 师:钱强 实验一四选一数据选择器的设计 一、实验目的 1、熟悉quartus ii软件的使用。 2、了解数据选择器的工作原理。 3、熟悉eda开发 的基本流程。 二、实验原理及内容 实验原理 数据选择器在实际中得到了广泛的应用,尤其是在通信中为了利用多路信号中的一路, 可以采用数据选择器进行选择再对该路信号加以利用。从多路输入信号中选择其中一路进行 输出的电路称为数据选择器。或:在地址信号控制下,从多路输入信息中选择其中的某一路 信息作为输出的电路称为数据选择器。数据选择器又叫多路选择器,简称mux。 4选1数据 选择器: (1)原理框图:如右图。 d0 、d1、d2、d3 :输入数据 a1 、a0 :地址变量 由地址码决定从4路输入中选择哪1路输出。 (2)真值表如下图: (3)逻辑图 数据选择器的原理比较简单,首先必须设置一个选择标志信号,目的就是为了从多路信 号中选择所需要的一路信号,选择标志信号的一种状态对应着一路信号。在应用中,设置一 定的选择标志信号状态即可得到相应的某一路信号。这就是数据选择器的实现原理。 三.实验内容 1、分别采用原理图和vhdl语言的形式设计4选1数据选择器 2、对所涉及的电路进行 编译及正确的仿真。电路图: 四、实验程序 library ieee; use ieee.std_logic_1164.all; entity mux4 is port( a0, a1, a2, a3 :in std_logic; s :in std_logic_vector (1 downto 0); y :out std_logic ); end mux4; architecture archmux of mux4 is begin y <= a0 when s = 00 else --当s=00时,y=a0 a1 when s = 01 else --当s=01时,y=a1 a2 when s = 10 else --当s=10时,y=a2 a3; --当s取其它值时,y=a2 end archmux; 五、运行结果 六.实验总结 真值表分析: 当js=0时,a1,a0取00,01,10,11时,分别可取d0,d1,d2,d3. 篇二:eda实验报告模版 《eda技术》实验报告

北航eda实验报告

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

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

EDA数字钟实验报告

目录 1.设计思路—————————————————————(3) 1.1总体结构——————————————————(3) 2.方案论证与选择——————————————————(3) 3.单元模块设计部分—————————————————(3)3.1 CNT10 模块的设计———————————————(4)3.2 CNT6 模块的设计———————————————(5)3.3 CNT101模块的设计———————————————(6)3.4 CNT61模块的设计———————————————(7) 3.5 CNT23模块的设计———————————————(8) 4.系统仿真—————————————————————(9) 4.1数字钟的引脚锁定———————————————(9) 4.2数字钟原理图————————————————(12) 4.3数字钟仿真图————————————————(10) 4.4数字钟编译报告———————————————(11) 5.参考文献————————————————————(13)

EDA数字钟设计 中文摘要: 数字钟学习的目的是掌握各类计数器及它们相连的设计方法;掌握多个数码管显示的原理与方法;掌握FPGA技术的层次化设计方法;掌握用VHDL语言的设计思想以及整个数字系统的设计。此数字钟具有时,分,秒计数显示功能,以24小时为计数循环;能实现清零,调节小时,分钟以及整点报时的功能。 关键词:数字钟,计数器,,FPGA,VHDL 1.设计思路 基于VHDL语言,用Top—To--Down的思想进行设计。 1.1 确定总体结构,如图1-1所示。 图1-1 2. 方案论证与选择 方案:设置小时和分,输出整点报时信号和时,分,秒信号。方案采用自顶向下的设计方法,它由秒计数模块,分计数模块,小时计数模块和顶层模块四部分组成。 3. 单元模块设计部分 RES是整个系统的复位键,低电平有效,复位时,各个输出都为零,时间显示0时0分0秒;clk是输入时钟,提供秒信号,上升沿触发,每出发一次,时间增加一秒;HRTMP,MIN10TMP,MINTMPKEYI可以分别设置小时位,10分位,分位,起到调时的作用,高电平有效,有效时,每来一个CLK时钟(1s),所对应的位都将以各自的计数循环; RING是整点报时。

EDA实验报告

湖北民族学院信息工程学院实验报告 (电气、电子类专业用) 班级: 09 姓名:周鹏学号:030940908 实验成绩: 实验地点: EDA实验室 课程名称:数字系统分析与设计实验类型:设计型 实验题目:实验一简单的QUARTUSII实例设计,基于VHDL格雷码编码器的设计 实验仪器:HH-SOC-EP3C40EDA/SOPC实验开发平台,PC机。 一、实验目的 1、通过一个简单的3—8译码器的设计,掌握组合逻辑电路的设计方法。 2、初步了解QUARTUSII原理图输入设计的全过程。 3、掌握组合逻辑电路的静态测试方法。 4、了解格雷码变换的原理。 5、进一步熟悉QUARTUSII软件的使用方法和VHDL输入的全过程。 6、进一步掌握实验系统的使用。 二、实验原理、原理图及电路图 3-8译码器三输入,八输出。当输入信号按二进制方式的表示值为N时,输出端标号为N的输出端输出高电平表示有信号产生,而其它则为低电平表示无信号产生。因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位为高电平的情况下,能表示所有的输入组合。其真值表如表1-1所示 输入输出 A B C D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0

1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 表1-1 三-八译码器真值表 译码器不需要像编码器那样用一个输出端指示输出是否有效。但可以在输入中加入一个输出使能端,用来指示是否将当前的输入进行有效的译码,当使能端指示输入信号无效或不用对当前信号进行译码时,输出端全为高电平,表示无任何信号。本例设计中没有考虑使能输入端,自己设计时可以考虑加入使能输入端时,程序如何设计。 三、实验步骤及内容 实验内容一: 在本实验中,用三个拨动开关来表示三八译码器的三个输入(A、B、C);用八个LED来表示三八译码器的八个输出(D0-D7)。通过输入不同的值来观察输入的结果与三八译码器的真值表(表1-1)是否一致。实验箱中的拨动开关与FPGA的接口电路如下图1-1所示,当开关闭合(拨动开关的档位在下方)时其输出为低电平,反之输出高电平。实验内容二: 本实验要求完成的任务是变换12位二进制码到12位的格雷码。实验中用12位拨动开关模块的K1~K12表示8位二进制输入,用LED模块的LED1~LED12来表示转换的实验结果十二位格雷码。实验LED亮表示对应的位为‘1’,LED灭表示对应的位为‘0’。通过输入不同的值来观察输入的结果与实验原理中的转换规则是否一致。实验箱中的拨动开关、与FPGA的接口电路,LED灯与FPGA的接口电路以及拨动开关、LED与FPGA的管脚连接在实验一中都做了详细说明,这里不在赘述。 实验步骤一: 1、建立工程文件 1)选择开始>程序>Altera>QuartusII8.1> QuartusII8.1(32BIT),运行QUARTUSII 软件。或者双击桌面上的QUARTUSII的图标运行QUARTUSII软件,出现如图1-3所示,如果是第一次打开QUARTUSII软件可能会有其它的提示信息,使用者可以根据自己的实际情况进行设定后进入图1-3所示界面。

数字钟实验报告

EDA技术课程设计 ——多功能数字钟 学院:城市学院 专业、班级:电子C154 姓名:高阳夏岩 学号:158102 58128 指导老师:安亚军 2017年12月

一实验目的 1、具有时、分、秒记数显示功能,以24小时循环计时。 2、要求数字钟具有清零、调节小时、分钟功能。 3、具有整点报时,整点报时的同时LED灯花样显示 二实验原理 1时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。 2时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。 3清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己任意时间的复位。 4蜂鸣器在整点时有报时信号产生,蜂鸣器报警。产生“滴答.滴答”的报警声音。 5LED灯在时钟显示时有花样显示信号产生。即根据进位情况,LED不停的闪烁,从而产生“花样”信号 三实验内容 1时钟记数部分 1)小时部分 其VHDL描述如下 编译,无误。 经仿真,其波形如下

2)分钟部分 其VHDL描述如下 编译,无误。 经仿真,其波形如下 3)秒部分 其VHDL描述如下

编译,无误。 经仿真,其波形如下 2整点报时部分,其VHDL描述如下 编译,无误。

经仿真,其波形如下 3驱动8位八段共阴扫描数码管的片选驱动信号输出部分 其VHDL描述如下 编译,无误。 经仿真,其波形如下 4驱动八段字形译码输出部分 该模块功能:信号输入后,模块驱动八段字形译码输出,A,B,C,D,E,F,G分别接八段共阴级数码管7个接口,即有字形输出。

EDA实验报告

实验一 单级放大电路的设计与仿真 一、实验目的 1)掌握单级放大电路在仿真软件中的设计。 1)掌握放大电路与静态工作点的调整和测试方法。 2)掌握放大电路的动态参数的测试方法。 3)观察静态工作点的选择对输出波形及电压放大倍数的影响。 二、实验要求 1.设计一个分压偏置的单管电压放大电路,要求信号源频率10kHz(峰值1mV) ,负载电阻3.9k Ω,电压增益大于70。 2.调节电路静态工作点(调节偏置电阻),观察电路出现饱和失真和截止失真的输出信号波形,并测试对应的静态工作点值。 3.调节电路静态工作点(调节偏置电阻),使电路输出信号不失真,并且幅度最大。在此状态下测试: ①电路静态工作点值; ②三极管的输入、输出特性曲线和 、 rbe 、rce 值; ③电路的输入电阻、输出电阻和电压增益; 4.电路的频率响应曲线和L f 、H f 值。 三、实验步骤 1.单级放大电路的原理图及原理

图1.1单级放大电路原理图 放大电路的原理图如上,该电路为一个分压偏置单级共射放大电路,其中信号源为10kHz (峰值为5mV ),该电路的负载为8k Ω。输入输出信号都是通过耦合电容连接信号源和负载的,这样做可以使得静态工作点不受负载和信号源的影响。该电路利用R4和R5从而稳定住三极管基极的电压值。引进了的电容C3对三极管的静态工作点没有影响,而在三极管的动态分析时可以将R2的作用忽略,使得小信号分析更加的简便。分压偏置的电路中引入了一个电位器R6,目的是为了在实验中便于修改三极管的静态工作点。 2.电路的截止失真和饱和失真 (1)电路的饱和失真 调节电位器R6,可以改变三极管的静态工作点,当R6值为1%时(0.7k Ω)在虚拟示波器中可以观察到输出波形明显的出现了饱和失真的现象,输出波形如图1.2所示。利用Multisim 的“直流工作点分析”功能可以测出三极管的静态工作点。由于软件本身的限制,无法直接读取三极管的Vce 值。为了解决这个问题,实验中添加表达式测量项b e V V (本实验电路中的表达式为“V(3)-V(2)”)来表示Vce ,测量结果如图1.3所示。

数字时钟设计实验报

电子课程设计题目:数字时钟

数字时钟设计实验报告 一、设计要求: 设计一个24小时制的数字时钟。 要求:计时、显示精度到秒;有校时功能。采用中小规模集成电路设计。 发挥:增加闹钟功能。 二、设计方案: 由秒时钟信号发生器、计时电路和校时电路构成电路。 秒时钟信号发生器可由振荡器和分频器构成。 计时电路中采用两个60进制计数器分别完成秒计时和分计时;24进制计数器完成时计时;采用译码器将计数器的输出译码后送七段数码管显示。 校时电路采用开关控制时、分、秒计数器的时钟信号为校时脉冲以完成校时。 三、电路框图: 图一 数字时钟电路框图 四、电路原理图: (一)秒脉冲信号发生器 秒脉冲信号发生器是数字电子钟的核心部分,它的精度和稳定度决定了数字钟的质量。由振荡器与分频器组合产生秒脉冲信号。 ? 振荡器: 通常用555定时器与RC 构成的多谐振荡器,经过调整输出1000Hz 脉冲。 ? 分频器: 分频器功能主要有两个,一是产生标准秒脉冲信号,一是提供功能 扩展电路所需要的信号,选用三片74LS290进行级联,因为每片为1/10分频器,三片级联好获得1Hz 标准秒脉冲。其电路图如下: 译码器 译码器 译码器 时计数器 (24进制) 分计数器 (60进制) 秒计数器 (60进制) 校 时 电 路 秒信号发生器

图二秒脉冲信号发生器 (二)秒、分、时计时器电路设计 秒、分计数器为60进制计数器,小时计数器为24进制计数器。 ?60进制——秒计数器 秒的个位部分为逢十进一,十位部分为逢六进一,从而共同完成60进制计数器。当计数到59时清零并重新开始计数。秒的个位部分的设计:利用十进制计数器CD40110设计10进制计数器显示秒的个位。个位计数器由0增加到9时产生进位,连在十位部计数器脉冲输入端CP,从而实现10进制计数和进位功能。利用74LS161和74LS11设计6进制计数器显示秒的十位,当十位计数器由0增加到5时利用74LS11与门产生一个高电平接到个位、十位的CD40110的清零端,同时产生一个脉冲给分的个位。其电路图如下: 图三60进制--秒计数电路

北航eda实验报告数字部分

Verilog数字电路设计 实验报告 院系: 组员: 年月日

目录 分组概况 (3) 分组概况 (3) 实验概况 (4) 实验感想 (5) 实验内容 (9) 实验一 (9) 实验二 (15) 实验三 (25) 实验四 (33)

组长: 主要负责各次实验的总体进程,以及选做实验的代码编译。在实验报告中负责统筹规划及后期编排。 组员: 负责各次实验必做实验源代码的录入及仿真。在实验报告中负责报告前期录入,包括各次实验的简要内容、步骤等。

本课程共安排四次实验,其内容是: 1、练习一、简单的组合逻辑设计 练习二、简单分频时序逻辑电路的设计 选做一、设计一个字节(8位)的比较器 2、练习三、利用条件语句实现计数分频时序电路 练习五、用always块实现较复杂组合逻辑电路 选做一、利用10MB时钟设计一个单周期波形 选做二、运用always块设计一个8路数据选择器 3、练习四、阻塞赋值与非阻塞赋值的区别 练习六、在Verilog中使用函数 练习七、在Verilog中使用任务 练习题5、综合一个可以计算正整数平方、立方、阶乘的函数思考题3、在blocking模块中实现对两种写法的仿真 4、必做一、设计一个串行数据检测器 必做二、楼梯灯——基本任务 选做一、楼梯灯——扩展任务

三、感想 通过这4次的实验,我们基本熟悉Modelsim 软件,掌握了Modelsim 软件的编译、仿真方法。同时在编写程序的过程中,加深了我们对课上所讲的语法的认识以及学会了测试模块的编写。经过实验一,我们掌握了基本组合逻辑电路,基本时序电路;经过实验二,我们掌握条件语句在简单时序模块设计中的使用、在Verilog模块中应用计数器以及用always实现较大组合逻辑电路;经过实验三,我们掌握阻塞赋值与非阻塞赋值的概念与区别,了解函数的定义和在模块设计中的使用,掌握任务在verilog模块设计中的应用;经过实验四,我们掌握利用有限状态机实现一般时序逻辑分析的方法。在实验过程中,我们也遇到过程序编写以及软件仿真上的问题。程序编写时,要注意一些细节,比如符号,全角与半角等。软件仿真过程中,我们出现过程序无错,但添加波形运行后,却没有波形的情况,最后上网百度,找到了解决方法。实验总体来说,都比较顺利。对于难度较大的实验四,只要思路清晰,考虑到所有的情况,就能做出来。

简单数字电子钟的设计实验报告

《EDA技术》课程实验报告 学生姓名: 所在班级: 指导教师: 记分及评价: 一、实验名称 实验1-3:简单数字电子钟的设计(原理图输入设计方法) 二、任务及要求 【基本部分】 1、在QuartusII平台上,采用原理图输入设计方法,调用两片74160十进制计数器,采 用反馈置数法,完成一个24进制同步计数器的设计,并进行时序仿真。要求具备 使能功能和异步清零功能,设计完成后封装成一个元件。 2、同1,采用原理图输入设计方法,调用两片74160十进制计数器,采用反馈置数法, 完成一个60进制同步计数器的设计,并进行时序仿真。要求具备使能功能和异步 清零功能,设计完成后封装成一个元件。 3、利用1和2所设计的60进制计数器和24进制计数器元件,采用同步的方式设计一 个简单的数字电子钟并进行时序仿真,要求具有时分秒功能显示功能、使能功能和 异步清零功能。 4、由于实验箱数码管采用的动态扫描方式,本实验暂时只要求仿真,硬件验证到实验 7再完成。 【发挥部分】 1、思考:采用反馈清零法设计的计数器与反馈置数法有何不同请用实例进行仿真。 2、如何实现电子钟时分秒连续可调的功能 三、原理图 二十四进制原理图

六十进制原理图 数字电子钟原理图

四、仿真及结果分析 24进制时序仿真图 24进制计数器采用的是两片74160集成块,利用同步置数原理,在第23个脉冲的时候跳转为零。这时个位计数器g3到g0的数值时0011,十位计数器的s3到s0的数值时0010。另外,使能断也应接入到与非门的中,与非门的作用是防止受干扰发生误写。 60进制时序仿真图 60进制计数器采用的是两片74160集成块,利用同步置数原理,在第59个脉冲的时候跳转为零。这时个位计数器g3到g0的数值时1001,十位计数器的s3到s0的数值时0101。另外,使能断也应接入到与非门的中,与非门的作用是防止受干扰发生误写。 电子时钟时序仿真图 电子时钟计数器采用的是两片60进制的计数器与一片24进制的计数器组成的,连接到一起就可以组成电子时钟计数器,要注意的是如果前面的24进制计数器与60进制计数器的使能短没接入与非门的话,可能会时钟脉冲的波形不是严格的按要求翻转。 五、小结 这次实验课,让我们更加了解了集成块74160的结构,学会使用集成块组成任意进制计数器。使用74160构成计数器时,应该注意使能端的使用、时钟脉冲信号多少,那些会影响仿真波形,但是,如果时钟脉冲多了的话,仿真波形就会在不该跳转的时候跳转。 实验中出现了很多问题,从发现错误到解决问题中自己学到了许多,明白了学习要善于思考,这样才能把自己的才能激发出来。这次的实验让我对学习EDA更加感兴趣,也增加我对这本课程的了解。

EDA实验报告

一MAX –plusII及开发系统使用 一、实验目的 1、熟悉利用MAX-plusⅡ的原理图输入方法设计简单的组合电路 2、掌握层次化设计的方法 3、熟悉DXT-BⅢ型EDA试验开发系统的使用 二、主要实验设备 PC 机一台(中档以上配置),DXT-B3 EDA实验系统一台。 三、实验原理 数字系统设计系列实验是建立在数字电路基础上的一个更高层次的设计性实验。它是借助可编程逻辑器件(PLD),采用在系统可编程技术(ISP),利用电子设计自动化软件(EDA),在计算机(PC)平台上进行的。 因为本实验是在计算机平台上进行,因此实验方式,实验手段和实验仪器与传统的实验有很大的区别,主要体现在以下几个方面: 1、实验器材集中化,所有实验基本上在一套实验设备上进行。 传统的实验每作完一个实验,实验器材基本上都要变动(个别除外)。而做本实验时,只要在计算机上把不同的程序输进去,其它步骤所有实验都一致; 2、实验耗材极小(基本上没有耗材); 3、在计算机上进行,自动化程度高,人机交互性好,修改、验证实验简单;

4、下载后,实验结果清晰; 5、实验仪器损耗少,维护简单; 下面,我们就本套实验设备做一个简单的介绍。 (一)Max+plusⅡ10.0的使用。 1、Max+PlusII软件的安装步骤: 第一步:系统要求 奔3CPU以上,128M内存以上,4G 以上硬盘,98 操作系统(98或Me操作系统才可以下载,其他操作系统下载必须安装驱动,否则只能仿真,如果大家只进行仿真的话,对系统没要求) 第二步:安装 点击安装可执行文件进行安装,安装完毕后会弹出一对话框,点击是或否都可以。 第三步:将安装文件夹中的License 文件夹打开,里面有一个License.bat 注册文件,将此文件复制到你的安装目录下(你的安装目录可放在任一个驱动器下,然后建立一个Max10的文件夹,将系统安装在此文件夹中,安装后此文件夹中会有三个文件夹)的任一个文件夹中,要清楚位置。 第四步:注册 启动Max+PlusII 软件,可以从开始-->程序-->Altera-->Max+PlusII 打开,也可以建立一个快捷方式在桌面上。启动软件后, 会有弹出一个对话框,点击是或否都可以,然 后进入系统。点击菜单中的Options,然后选 中License菜单项,打开弹出一个注册对话框, 在注册文件路径中打开你第三步中复制位置的 License 文件,然后点击OK,注册完毕。 2、 max+plusⅡ软件基本设计流程

EDA数字钟的设计实验报告

五邑大学实验报告 实验课程名称: EDA实验 院系名称:信息工程学院 专业名称:通信工程(物联网) (一)实验目的: 设计并实现具有一定功能的数字钟。掌握各类计数器及它们相连的设计方法,掌握多个数码管显示的原理与方法,掌握FPGA的层次化设计方法,掌握VHDL语言的设计思想以及整个数字系统的设计。此数字钟具有时,分,秒计数显示功能,能实现清零,调节小时,分钟以及整点报时的功能。 (二)实验器材: 计算机一台,EDA实验箱一台。 (三)实验原理:

实验内容: 1.正常的时、分、秒计时功能,分别由6个数码管显示24小时、60分钟,60秒钟的计数器显示。 2.按键实现“校时”“校分”功能; 3.用扬声器做整点报时。当计时到达59’50”时鸣叫。 方案:利用试验箱上的七段码译码器(模式7),采用静态显示,系统时钟选择1Hz。整个系统可以是若干文件组成,用PORT MAP 实现的方式;也可以是一个文件用多进程方式实现;亦或者是用文本和图形混合的方式实现;亦或者是用LPM参数化模块实现。 (五)实验步骤: 1. 新建一个文件夹,命名为shuzizhong. 2. 输入源程序。打开QuartusⅡ,选择File→new命令。在New窗口中的DesignFiles 栏选择编译文件-的语言类型,这里选择VHDL File选项。然后在VHDL文本编译窗口中输入秒模块程序。

秒模块源程序如下: library ieee; use SECOND is port(clk,clr:in std_logic;----时钟/清零信号 sec1,sec0:out std_logic_vector(3 downto 0);----秒高位/低位 co:out std_logic);-------输出/进位信号 end SECOND; architecture SEC of SECOND is begin process(clk,clr) variable cnt1,cnt0:std_logic_vector(3 downto 0);---计数 begin if clr='1' then----当ckr为1时,高低位均为0 cnt1:="0000"; cnt0:="0000"; elsif clk'event and clk='1' then if cnt1="0101" and cnt0="1000" then----当记数为58(实际是经过59个记时脉冲)co<='1';----进位 cnt0:="1001";----低位为9 elsif cnt0<"1001" then----小于9时 cnt0:=cnt0+1;----计数 else cnt0:="0000"; if cnt1<"0101" then----高位小于5时 cnt1:=cnt1+1; else cnt1:="0000"; co<='0'; end if; end if; end if; sec1<=cnt1; sec0<=cnt0; end process; end SEC; 3.文件存盘。选择File→Save As命令,找到已经设立的文件夹,存盘文件名应与实体名一致。 4.创建工程。打开并建立新工程管理窗口,选择File→New Project Wizard命令,即弹出设置窗口,命名为57。

相关文档
最新文档