生产实习报告(3)

2018-12-17 15:56

4.2.4 FPGA项目训练

(1)与门逻辑设计实例

a)显式建模程序:

module and_gate(clk, rst_n, a, b, f);

input clk, rst_n;

input a, b; // output reg f; //

/* // 行为建模 //assign f = a & b; 数据流建模 always @ (posedge clk or negedge rst_n) //结构化建模 begin if (!rst_n) begin f <= 0; end else begin f <= a & b; end end endmodule b)验证代码程序:

c)仿真图形展示:

(2) 流水灯设计实例 a)显式建模程序为:

module ledrun ( clk, rst); input clk, rst; output reg[ 3:0 ]led;

reg [25:0] count; //延时计数器,这里是25位计数器 always @(posedge clk) //每个时钟上升沿进行下面动作 if(rst)

led <= 4'b1000; //复位初始化,只有一个灯亮着,这里做一个

灯的流水灯,如果做两个灯,就是1100

always @(posedge clk)

If(reg[25] == 1) //计数满后再进行下面动作,延时。 begin

if(led <=4b’0001) //当滚到尽头,回到左侧起始端 led <=4b’1000; else

led <={led[0], led[4:1]} //右移,用并置符实现 end

endmodule

此为普通流水灯,可以向右滚动,到最右端返回最左端,也可以通过设置使其向左滚动,到最左端返回最右端。

b)验证代码程序为:

`timescale 1ns/1ps module shiyan2_tb; reg clk; reg rst; wire [3:0] led; parameter T1s = 5;

initial begin clk = 1'b1; rst = 1'b0; # 200.1 rst = 1'b1; # 2000 $stop;

end

always #10 clk = ~clk;//50M shiyan2 #(T1s)

shiyan2_dut(.clk(clk),.rst(rst),.led(led)); endmodule

c)仿真图形及实验照片展示:

(3)边沿检测设计实例 a)显示建模程序为:

b)验证代码程序为:

c)仿真波形展示:

(4) 数码管设计实例

如图所示为本设计所使用的数码管电路结构,使用的是六位共阳极数码管,六个PNP型三极管分别作为六组数码管电源的输入开关,也就是我们常说的位选信号,PNP三极管为低电平导通,所以我们的位选信号低有效。在这里,为了节约FPGA的IO资源,我们把六个位选信号连接到了三八译码器74HC138D。

下面为6个数码管的显示。

一个数码管对应的data位宽为4位,六个数码管就需要24位,而且分时显示需要对六个数码管进行切换。因此我们需要修改原有的seg7.v


生产实习报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《老王》10教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: