北理工FPGA实验报告.docxVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北理工FPGA实验报告

数字逻辑与CPUFPGA实验报告姓名:班级:学号:实验内容在本次实验中,我们对ISE开发环境进行了了解,并通过Verilog语言下的代码编写,同时借助FPGA开发板完成了包括计数器、移位寄存器、七段数码管显示等多个实验。下面对其中三个实验的Verilog源代码进行详细注释。计数器实验源代码及注释如下: module mod5cnt( input wire clr, //定义“清零”输入变量 input wire clk, //定义“时钟脉冲”输入变量 output reg [2:0] q //定义3个存储单元作为输出变量 );reg [24:0] q1; //定义25个存储单元always@(posedge clk or posedge clr) begin if(clr==1) q1 = 0; else q1 = q1 + 1; end //该always模块是将25个存储单元设置成25位计数器assign mclk = q1[24]; //将q1[24]的值赋给时钟信号变量mclk。 通过计算,这里mclk时钟信号频率大约为3 Hz always@(posedge mclk or posedge clr) begin if(clr==1) q = 0; else if (q == 4) q = 0; else q = q + 1; end //该always模块是实现模5计数器,从0逐渐加1,至4后在下一个时钟信号来临或者有清零输入时,计数器回到全为0的状态。endmodule(二)移位寄存器实验源代码及注释如下:module ShiftReg( input wire clk, //定义“时钟脉冲”输入变量 input wire clr, //定义“清零”输入变量 input wire data_in, //定义“输入数据”输入变量 output reg [3:0] q //定义4个存储单元作为输出变量);reg [24:0] q1; //定义25个存储单元always@(posedge clk or posedge clr) begin if(clr==1) q1 = 0; else q1 = q1 + 1; end //该always模块是将25个存储单元设置成25位计数器 assign mclk = q1[24]; //将q1[24]的值赋给时钟信号变量mclk。 通过计算,这里mclk时钟信号频率大约为3 Hz always@(posedge mclk or posedge clr) begin if(clr==1) q = 0; else begin q[3]= data_in; q[2:0] = q[3:1]; end end //该always模块是实现4位移位寄存器。在没有清零输入下,让q[3]表示data_in输入的值,而后3位去q[2]、q[1]、q[0]依次等于上一时刻q[3]、q[2]、q[1]的值。endmodule(三)七段数码管实验四位七段数码管显示实验源代码及注释如下:module hex7seg( input wire [3:0] x, //定义4个直通输入变量,用作一个数字0~15的输入 output reg [6:0] a_to_g, //定义7个存储单元为输出变量,用作七段数码管的驱动控制 output wire [3:0] an //定义4个直通输出变量,用作数码管使能的控制 );assign an=4b0000; //4个数码管全部使能always @(*) case(x)0:a_to_g=7b0000001; //x=0时,0000001这7位二进制数赋给a_to_g,以下同理。 1:a_to_g=7b1001111; 2:a_to_g=7b0010010; 3:a_to_g=7b0000110; 4:a_to_g=7b1001100; 5:a_to_g=7b0100100; 6:a_to_g=7b0100000; 7:a_to_g=7b0001111; 8:a_to_g=7b0000000; 9:a_to_g=7b0000100; hA:a_to_g=7b0001000; hB:a_to_g=7b1100000; hC:a_to_g=7b0110001; hD:a_to_g=7b1000010; hE:a_to_g=7b0110000; hF:a_to_g=7b0111000; default:a_to_g=7b0000001; //缺省显示0 endcase //该always模块是7段数码管的译码程序。根据case语句中的各种情况执行,可以根据

文档评论(0)

didala + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档