电子电路设计数字部分
实验报告
学 院:姓 名:
实验一 简单组合逻辑设计
实验内容
描述一个可综合的数据比较器,比较数据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的时钟,设计一个单周期形状的周期波形。
实验仿真结果