从零开始学习cpld(1)


硬件平台:Altera  MAX II  EPM240T100C5N
软件平台:Quartus II 9.1    ModelSim-Altera 6.5b (Quartus II 9.1) Starter Edition
操作系统:win8

cpld的代码设计与传统C语言设计有很大不同,要基于并行的思想。


学习cpld第一天先买了一块特权同学的入门级开发板+边学边练快速入门Verilog/VHDL,搭建环境,安装USB blaster 驱动,跑了一下自带例程,学习并分析修改了这个例程,阅读书籍前4章,对Verilog语法有了初步了解,分下第一个分频器代码。


module clkdiv(
		clk,rst_n,
		clk_div	
		);

input clk;		//50MHz
input rst_n;	//低电平复位信号

output clk_div;	//分频信号,连接到蜂鸣器

//---------------------------------------------------
reg[23:0] cnt;	//分频计数器

always @ (posedge clk or negedge rst_n)	//异步复位
	if(!rst_n) cnt <= 24'd0;
	else cnt <= cnt+1'b1;	//寄存器cnt 20ms循环计数

//----------------------------------------------------
reg clk_div_r;	//clk_div信号值寄存器

always @ (posedge clk or negedge rst_n) 
	if(!rst_n) clk_div_r <= 1'b0;
	else if(cnt == 24'hffffff) clk_div_r <= ~clk_div_r;	//每20ms让clk_div_r值翻转一次

assign clk_div = clk_div_r;	

endmodule


module clkdiv(
		clk,rst_n,
		clk_div	
		);

module <模块名> (端口信号列表,....)

 //逻辑代码

endmodule


input clk;		//50MHz
input rst_n;	//低电平复位信号

output clk_div;	//分频信号,连接到蜂鸣器

input   output   inout   是端口声明,还需要在Quartus II 开发环境中指定要分配的管脚,这部分还没有学习,以后再加入。

 

always @ (posedge clk or negedge rst_n)	//异步复位
	if(!rst_n) cnt <= 24'd0;
	else cnt <= cnt+1'b1;	//寄存器cnt 20ms循环计数
always  我现在是理解为 硬件触发条件  posedge是上升沿 negedge 是下降沿

cnt <= 24'd0    cnt赋值为0

24’d0 这种常量表示定义为   

<长度><数制><数值>

本例中 为24位宽的十进制数0

其他的数值还有 d  十进制       h  十六进制     b  二进制

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值