verilog HDL基础程序

2019-04-09 20:32

涉及到需要时间的并且在不同的时间执行程序时就要用到分频计数器至于需要分频多少看需要执行多少次,也就是需要用到的时间有多少次。

3-8 译码器

//学习3 8译码器的原理, //拨码开关的 1 2 3作为输入

//本实验采用拨码开关来作为输入,LED作为状态显示

//当然如果你的学习板没有拨码开关,可以用key1 key2 key3 作为数据输入。 module decoder_38(out,key_in);

output[7:0] out; //3 8译码器输出有8钟状态,所以要8个LED灯。 input[2:0] key_in; //(1 2 3)key1 key2 key3 作为数据输入 reg[7:0] out;

always @(key_in) begin

case(key_in)

3'd0: out=8'b11111110; //LED作为状态显示,低电平有效 3'd1: out=8'b11111101; 3'd2: out=8'b11111011; 3'd3: out=8'b11110111; 3'd4: out=8'b11101111; 3'd5: out=8'b11011111; 3'd6: out=8'b10111111; 3'd7: out=8'b01111111; endcase end

endmodule

1位数码管动态显示 //一位数码管试验

//利用分频计数器得到数码管,效果

module SMG_LED (clk_50M,rst,led_bit,dataout);

input clk_50M,rst; //系统时钟50M输入 从12脚输入。 output [7:0] dataout; //我们这里用数码管, output led_bit; //一位数码管的位选择 reg [7:0] dataout; reg led_bit;

reg [27:0] count; //分频计数器 //分频计数器

always @ ( posedge clk_50M ) begin

count<=count+1; //计数器自加 end

always @ ( posedge clk_50M or negedge rst) begin

led_bit <= 'b0; //是数码管的位选择处于导通状态 case ( count[27:24] )

// case ( count[27:24] )这一句希望初学者看明白, // 也是分频的关键

// 在数码管上面显示0到F 0: dataout<=8'b11000000; //0 1: dataout<=8'b11111001; 2: dataout<=8'b10100100; 3: dataout<=8'b10110000; 4: dataout<=8'b10011001; 5: dataout<=8'b10010010; 6: dataout<=8'b10000010; 7: dataout<=8'b11111000; 8: dataout<=8'b10000000; 9: dataout<=8'b10010000; 10:dataout<=8'b10001000; 11:dataout<=8'b10000011; 12:dataout<=8'b11000110; 13:dataout<=8'b10100001; 14:dataout<=8'b10000110; 15:dataout<=8'b10001110; //f endcase end

endmodule

7段数码管静态显示

//本实验就是学习单个数码管的显示

module SMG_LED (clk_50M,led_bit,dataout);

input clk_50M ; //系统时钟50M输入 从12脚输入。 output [7:0] dataout; //我们这里用数码管, output led_bit; //一位数码管的位选择 reg [7:0] dataout; reg led_bit;

always @ ( posedge clk_50M ) begin

led_bit <= 'b0; //是数码管的位选择处于导通状态

dataout<=8'b11000000; //修改7段码,可以显示不同的字符 //本实验初始是在数码管显示0 end

数码管静态显示0到7

//7段数码管测试实验:以动态扫描方式在8位数码管 //“同时”显示0--7

//实验的目的是向用户介绍多个数码管动态显示的方法。

//动态显示的方法是,按一定的频率轮流向各个数码管的COM端送出低电平 //,同时送出对应的数据给各段 module led_0_7 (clk,rst,dataout,en);

input clk,rst; //系统时钟50M输入 从12脚输入。

output[7:0] dataout; //数码管的段码输出

output[7:0] en; //数码管的位选使能输出 reg[7:0] dataout; reg[7:0] en;

reg[15:0] cnt_scan;//扫描频率计数器 reg[4:0] dataout_buf;

always@(posedge clk or negedge rst) begin if(!rst) begin cnt_scan<=0; end else begin cnt_scan<=cnt_scan+1; end end

always @(cnt_scan) begin

case(cnt_scan[15:13]) 3'b000 :

en = 8'b1111_1110; 3'b001 :

en = 8'b1111_1101; 3'b010 :

en = 8'b1111_1011; 3'b011 :

en = 8'b1111_0111; 3'b100 :

en = 8'b1110_1111; 3'b101 :

en = 8'b1101_1111; 3'b110 :

en = 8'b1011_1111; 3'b111 :

en = 8'b0111_1111; default :

en = 8'b1111_1110; endcase end

always@(en) //对应COM信号给出各段数据 begin case(en) 8'b1111_1110: dataout_buf=0; 8'b1111_1101:

dataout_buf=1; 8'b1111_1011: dataout_buf=2; 8'b1111_0111: dataout_buf=3; 8'b1110_1111: dataout_buf=4; 8'b1101_1111: dataout_buf=5; 8'b1011_1111: dataout_buf=6; 8'b0111_1111: dataout_buf=7; default: dataout_buf=8; endcase end

always@(dataout_buf) begin case(dataout_buf) 4'b0000: dataout=8'b1100_0000; 4'b0001: dataout=8'b1111_1001; 4'b0010: dataout=8'b1010_0100; 4'b0011: dataout=8'b1011_0000; 4'b0100: dataout=8'b1001_1001; 4'b0101: dataout=8'b1001_0010; 4'b0110: dataout=8'b1000_0010; 4'b0111: dataout=8'b1111_1000; 4'b1000: dataout=8'b1000_0000; 4'b1001: dataout=8'b1001_1000; 4'b1010: dataout=8'b1000_1000; 4'b1011: dataout=8'b1000_0011;

4'b1100: dataout=8'b1100_0110; 4'b1101: dataout=8'b1010_0001; 4'b1110: dataout=8'b1000_0110; 4'b1111: dataout=8'b1000_1110; endcase end

endmodule

8位优先编码器 //学习编码器的原理

//优先编码器,拨码开关来作为输入,结果由数码管显示 module encode(a,c,en);

input[8:1] a; //由键盘输入数据 output[7:0] c; //结果由数码管显示 reg[7:0] c; output[7:0] en; reg[3:0] c_tmp; integer i; assign en=0; always@(a) begin c_tmp=0; for(i=1;i<9;i=i+1) begin if(a[i]) c_tmp=i; end end

always@(c_tmp) begin

//下面是7段码显示的段码 case(c_tmp) 4'b0000: c=8'b11000000; //0 4'b0001: c=8'b11111001; //1 4'b0010: c=8'b10100100; 4'b0011: c=8'b10110000; 4'b0100: c=8'b10011001;


verilog HDL基础程序.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:冲孔灌注桩专项施工方案

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

马上注册会员

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