用Verilog编写“数显LED的亮度控制电路”

前言:

今天我将介绍的是Verilog的使用用法,然后如何用Verilog编写一个简单的小项目,项目的内容如标题所示——“数显LED的亮度控制电路”,本文章大致结构如下。

  • 介绍Verilog的基本语法
  • 介绍Verilog的基本底层电路
  • 总结归纳初学者可能犯得错误,并进行纠正

当我们对Verilog有了一定的了解后,就开始编写今天的项目了,思路如下:

  • 项目任务的解析
  • 设计思路
  • 编写代码
  • 成果展示

希望大家可以从易到难,慢慢的去理解、并熟练的运用这种语言。
那么任务开始了。

第一部分:Verilog硬件描述语言语法总结

一、摘录10条基本语法

1、module:模块的建立

module addr (a, b, cin, count, sum);  
endmodule 

每个模块以module开始,必须以endmodule结尾

2、input:数据的输入

input [2:0] a; 

使用input函数输入一个值,且位长为2-0+1=3

3、output:数据的输出

output [2:1] sum;

使用output函数输出一个值,且位长为2-1+1=2

4、assign:数据赋值

assign {count,sum} = a +b + cin;

注意:对于assign必须为wire型,并且{ }具有连接作用

5、assign:数据选择赋值

assign equare = (a == b) ? 1:0 ;

当满足(a==b)时,equare=1,反之为0

6、always:条件触发

always@(posedge clk or negedge key)begin 
end

如图为条件触发,当clk为高电平,且key为低电平时,满足条件进入always程序

7、wire ,reg:定义数据类型

  wire [3:0]q; 
  reg  [4:0]q2;

定义一个数据类型为wire且长度为4的q,和数据类型为reg长度为5的q2

8、if else:条件选择语句

  if (a>b)a=0;
  else a=1;

当满足括号内的条件时,则运行后面的程序,否则则运行else的程序。

9、case:多重条件选择语句

 case (key) begin 
 1:a=1;break;
 2:b=1;break;
 default :c=1;break;
 endcase

当key满足1,2,3的条件时,分别执行相应的语句,结尾记得用endcase结尾

10、task:与函数类似,用task进行包装

task q_sub();
begin 
q=1;
end
endtask

task的作用是,可以不必把所有的代码写到一个always中去,这样的代码看起来更加美观

二、摘录10条基本底层电路

1、数据选择器

module mux2(out,a,b,sel);
input a,b,sel;    
output out;    
reg out;
always @(sel or a or b) begin
    if (sel)  out = a;  else out = b;
end
endmodule;	

2、数据比较器

module compare(a,b,y);
input [2:0] a,b;  
output y;  
reg y; 
always @ (a or b)  begin
    if (a < b) y = 1;  
	else y = 0;
end  
endmodule

3、二进制计数器

module Bin_count(clr,clk,q);
input  clk,clr;
output [3:0]q;
reg    [3:0]q;
always @(negedge clk or posedge clr) begin
    if(clr) q=0;
    else q=q+1;
end
endmodule

4、100分频电路

module div100_clk(clk,q);
input  clk;    
output q;    
reg [5:0]cunt;    
reg q;
always @(posedge clk)  begin
    if(cunt<49) begin cunt=cunt+1; q=q; end
    else begi
  • 10
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值