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

  • 格式:docx
  • 大小:1008.88 KB
  • 文档页数:31

下载文档原格式

  / 31
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

学院:

姓名:

实验一简单组合逻辑设计

实验内容

描述一个可综合的数据比较器,比较数据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分频器的可综合模型,观察时序仿真结果。

实验仿真结果

实验代码

主程序

module half_clk(reset,clk_in,clk_out);

^

input clk_in,reset;

output clk_out;

reg clk_out;

always@(negedge clk_in)

begin

if(!reset)

clk_out=0;

else

clk_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

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

实验内容

利用10MHz的时钟,设计一个单周期形状的周期波形。

实验仿真结果

实验代码

主程序

'

module fdivision(RESET,F10M,out); input F10M,RESET;

output out;

reg out;

reg[7:0] i;

always @(posedge F10M)

if(!RESET)

begin

{

out<=0;

i<=0;

end

else if(i==2||i==3)

begin

out=~out;

i<=i+1;

end

(

else if(i==5)

i<=1;

else

i<=i+1;

endmodule

测试程序

`timescale 1ns/100ps

(

module division_top;

reg F10M,RESET;

wire out;

always #50 F10M=~F10M;

initial

begin

RESET=1;

&

F10M=0;

#90 RESET=0;

#100 RESET=1;

#10000 $stop;

end

fdivision fdivision(.RESET(RESET),.F10M(F10M),.out(out));

endmodule

实验四阻塞赋值与非阻塞赋值的区别:

实验内容

比较四种不同的写法,观察阻塞与非阻塞赋值的区别。

Blocking:

always @(posedge clk)

begin

b=a;

c=b;

end

Blocking1:

always @(posedge clk)

begin