FPGA 电路开发入门实验

本文介绍了FPGA电路开发的基础实验,包括2-4译码器、3-8译码器的设计,以及不同类型的计数器实现。通过实验3-1和3-2,设计了0-17计数器并讨论了高速时钟下的现象。在实验4中,构建了时间基准电路和移位寄存器。实验6探讨了计数器、ROM和DDS,解析了正弦波频率与计数器增量值的关系,并提出了降低频率的方法。
摘要由CSDN通过智能技术生成
             **实验一   用1个拨码开关控制所有的LED灯亮灭** 

项目创建、编译和下载
电路原理图

指派管脚图

sw0控制10个LED灯

                             **实验二**

译码器组合逻辑
2-1 放置2个2-4译码器模块,则总共有2组SW, 每组2个,2组LED,每组4个,每组SW分别控 制其对应的LED组。

module dec_2to4(
IN  ,
OUT);
input  [2-1:0] IN  ;
output [4-1:0] OUT ;

reg [4-1:0] OUT ;

always @ (IN) begin
  case(IN)
    2'b00: OUT = 4'b 0001;
    2'b01: OUT = 4'b 0010;
    2'b10: OUT = 4'b 0100;
    2'b11: OUT = 4'b 1000;
  endcase
end

endmodule // module dec_2to4;

两组2-4译码器原理图

两组2-4译码器指派管脚图

00-0

01-1

10-2

11-3
2-2 设计一个3-8译码器

module exa2(out,in);
   output [8-1:0] out;
   input [3-1:0] in;
   reg [8-1:0] out;
   always @(in)
   begin
     case(in)
     3'd0:  out=8'b00000001;
     3'd1:  out=8'b00000010;
     3'd2:  out=8'b00000100;
     3'd3:  out=8'b00001000;
     3'd4:  out=8'b00010000;
     3'd5:  out=8'b00100000;
     3'd6:  out=8'b01000000;
     3'd7:  out=8'b10000000;
     endcase
   end
 endmodule

3-8译码器原理图

3-8译码器指派管脚图
000-0
001-1
010-2
011-3
100-4
101-5
110-6
111-7

2-3 用4个拨码开关控制一个7段译码器的数字,从 0-9-A-F,共16个数字和字母

module yimaqi(out,in);
   output [16-1:0] out;
   input [4-1:0] in;
   reg [16-1:0] out;
   always @(in)
   begin
     case(in)
     4'd0:  out=16'b1111111111000000;
     4'd1:  out=16'b1111111111111001;
     4'd2:  out=16'b1111111110100100;
     4'd3:  out=16'b1111111110110000;
     4'd4:  out=16'b1111111110011001;
     4'd5:  out=16'b1111111110010010;
     4'd6:  out=16'b1111111110000010;
     4'd7:  out=16'b1111111111111000;
     4'd8:  out=16'b1111111110000000;
     4'd9:  out=16'b1111111110010000;
     4'd10: out=16'b1111111110001000;
     4'd11: out=16'b1111111110000011;
     4'd12: out=16'b1111111111000110;
     4'd13: out=16'b1111111110100001;
     4'd14: out=16'b1111111110000110;
     4'd15: out=16'b1111111110001110;
     endcase
   end
 endmodule

原理图
指派管脚
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
实验三
计数器、波形仿真、SignalTap
3-1 设计一个0-17的计数器,当计数值为17的时,OV输出1,其他输出0

module cnt_0to17(
  CLK   ,   // clock
  CNTVAL,   // counter value
  OV    );  // overflow 
input CLK;
output [6-1:0] CNTVAL;
output OV;

reg [6-1:0] CNTVAL;
reg OV;

always @ (posedge CLK) begin
  if(CNTVAL >= 17)
    CNTVAL <= 0;
  else
    CNTVAL <= CNTVAL + 1'b1;
end

always @ (CNTVAL) begin
  if(CNTVAL == 17)
    OV = 1'b1;
  else
    OV = 1'b0;
end

endmodule   // module cnt_0to17

原理图
RTL图
管脚指派图
仿真图

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值