從零開始學習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  二進制

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章