第一范文网 - 专业文章范例文档资料分享平台

北航电子电路设计verilog实验报告

来源:用户分享 时间:2025/5/17 8:07:34 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

本实验测试模块中,为了生成变化的数据信号a和b,采用了#100 a=0;b=1;赋值语句。若需要比较的数据较多,所需赋值语句会增加,采用always # 100 clock=~clock产生周期时钟信号然后随机生成数据更简便。

6 / 19

选作一:设计一个字节的比较器

一、实验目的

比较两个字节的大小,如a[7:0]大于b[7:0],则输出高电平,否则输出低电平;并改写测试模型,使其能进行比较全面的测试。

二、实验设备

安装Modelsim-6.5c的PC机。 三、实验代码 ①模块源代码:

module compare_8bit(result,a,b);

input [7:0]a,b; output result;

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

endmodule ②测试程序

`timescale 1ns/1ns

`include \

module test; reg[7:0]a,b; wire result; initial begin a=8'd0; b=8'd0;

#100 a=8'd6;b=8'd5; #100 a=8'd9;b=8'd9; #100 a=8'd12;b=8'd15; #100 $stop; end

compare_8bit m(.result(result),.a(a),.b(b));

endmodule 经过改写:

`timescale 1ns/1ns `include \

module test; reg[7:0]a,b; reg clock; wire result; initial begin a=8'd0; b=8'd0; clock=0; end

7 / 19

always # 50 clock=~clock; always@(posedge clock) begin

a={$random}%6; b={$random}%6; end initial

begin #100000 $stop; end

eight m(.result(result),.a(a),.b(b));

endmodule

四、仿真结果

经过改写:

五、实验总结

有256个可能值,为了进行比较全面的测试,改写为 always # 50 clock=~clock; always@(posedge clock) begin

a={$random}%6; b={$random}%6;

让a,b随机生成数据,可通过设置运行时间进行任意次比较。

最初测试模块使用了#100 a=8'd6;b=8'd5;的赋值语句,a,b的每个值都要手动赋予。由于一个字节(8位)

8 / 19

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

一、实验目的

1、掌握最基本组合逻辑电路的实现方法。 2、学习时序电路测试模块的编写。 3、学习综合和不同层次的仿真。 二、实验设备

安装Modelsim-6.5c的PC机。 三、实验内容

用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@(posedge 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

五、仿真结果

六、实验总结

在可综合的Verilog HDL模型,通常使用always块和@(posedge clk)或@(negedge clk)的结构来表述时序逻辑。

为了能正确地观察到仿真结果,并确定时序电路的起始相位,在可综合风格的模块中,通常定义一个复位信号reset,当reset为低电平时,对电路中的寄存器进行复位。

clk_out起始段为红色,是因为它是reg型,且尚未被赋值,仿真工具认为其为不定态。

9 / 19

选作二 七段数码管译码电路

一、实验目的

设计一个七段数码管译码电路。 二、实验设备

安装Modelsim-6.5c的PC机。 三、实验代码 ①模块源代码

module segdisplay(data,seg); input [3:0] data; output [6:0] seg; reg [6:0] paraseg; always @(data) begin case (data) 4'b0000: paraseg=7'b1111110; 4'b0001: paraseg=7'b0110000; 4'b0010: paraseg=7'b1101101; 4'b0011: paraseg=7'b1111001; 4'b0100: paraseg=7'b0110011; 4'b0101: paraseg=7'b1011011; 4'b0110: paraseg=7'b0011111; 4'b0111: paraseg=7'b1110000; 4'b1000: paraseg=7'b1111111; 4'b1001: paraseg=7'b1110011; 4'b1010: paraseg=7'b0001101; 4'b1011: paraseg=7'b0011001; 4'b1100: paraseg=7'b0100011; 4'b1101: paraseg=7'b1001011; 4'b1110: paraseg=7'b0001111; 4'b1111: paraseg=7'b0000000; endcase end

assign seg=paraseg; endmodule ②测试程序

`timescale 1ns/1ns module experiment4; wire [6:0] out; reg [3:0] data; reg clock; initial begin data = 0; clock = 0; end always #50 clock= ~clock; always@(posedge clock) begin data <= data+1; end initial begin

/ 19

10

搜索更多关于: 北航电子电路设计verilog实验报告 的文档
北航电子电路设计verilog实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3ug556wpb63h0qq02ukg7f1wl0k4iy014ya_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top