北航电子电路设计数字部分实验报告
- 格式:docx
- 大小:1008.88 KB
- 文档页数:31
电子电路设计数字部分实验报告
、
学院:
姓名:
实验一简单组合逻辑设计
(
实验内容
描述一个可综合的数据比较器,比较数据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