(FPGA编程)仿C的硬件描述语言----verilog基本语法

学习FPGA编程,学习语法是编程的第一步的,今天就侃侃硬件仿C的硬件描述语言---verilog基本语法!

1.模块化编写输入输出接口:

module cmd_ctr (//module 模块名

                         clk,rst_n,enable,

                          h2l,data_in,end_cmd);

注意: 模块名与保存文件名cmd_ctr .v必须一致,编程编一个模块除了有你需要输出管脚,输入端通常还需要添加异步复位信号rst_n,同步时钟信号clk,以及开启触发模块工作的enable信号,输出端还有模块工作完成信号end_cmd。

2.各信号类型定义:

input clk;
input rst_n;
input enable;
input h2l;
input[7:0] data_in;
output dataout;
parameter t1ms=20'd49_999;//1000000ns/20ns=50000=1024*1024
reg[19:0] count;
reg iscount;

wire clock;

input与output定义输入输出信号,parameter用于定于参数类型为常数,wire用于信号或者模块之间的连线,reg为寄存器信号,用于暂存数据,区别reg有时是不能替代wire类型的,比如用作下个模块的时钟信号。

3.简单的always编写:

always @(posedge clk or negedge rst_n)
if(!rst_n)
begin
 rdata<=4'b0001;
end
else if(dataend)
begin
 case(datain)
  8'h1d:rdata<={rdata[2:0],rdata[3]};
  8'h22:rdata<={rdata[0],rdata[3:1]};
  8'h14:rdata<={rdata[0],rdata[1],rdata[2],rdata[3]};
  endcase
end

跟VHDL一样,verilog也是由一个一个的进程构成,只是构成的方式不同,VHDL由多个process组成,而verilog由多个always组成,而且编写的形式还是比较固定的,当然在编写时一定要有编写C语言的思维,因此一定要会用if,case语句。而且要养成每个case或者if后面一定要紧跟一个begin...........end语句,养成良好的编写习惯。

4.verilog编程两大利器之一:计数器

always @(posedge clk or negedge rst_n)
if(!rst_n)
begin 
 count<=13'd0;
end
else if(count==13'd4999)
begin
 count<=13'd0;
end
els

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值