一、設(shè)計目的
1、學(xué)會用HDL語言設(shè)計時序電路;
2、用HDL語言設(shè)計74LS160計數(shù)器芯片的數(shù)字功能。
二、設(shè)計原理
計數(shù)器是最常用的寄存器邏輯電路,從微處理器的地址發(fā)生器到頻率計都需要用到計數(shù)器。一般計數(shù)器可以分為兩類:加法計數(shù)器和減法計數(shù)器。加法計數(shù)器每來一個脈沖計數(shù)值加1;減法計數(shù)器每來一個脈沖計數(shù)值減1。
下面將通過模仿中規(guī)模集成電路74LS160的功能,用HDL語言設(shè)計一個十進制可預(yù)置計數(shù)器。74LS160共有一個時鐘輸入端CLK,一個清除輸入端CLR,兩個計數(shù)允許信號P和T,4個可預(yù)置數(shù)據(jù)輸入端D、C、B、A,一個置位允許端LOAD,4個計數(shù)輸出端QD、QC、QB、QA,一個進位輸出端RC,其工作模式及時序圖如下表和圖2-14所示。
功能 |
輸入 |
輸出 |
||||
操作 |
CLR |
CLK |
P |
T |
LOAD |
QD、QC、QB、QA |
復(fù)位 |
L |
X |
X |
X |
X |
L、L、L、L |
預(yù)置 |
H |
↑ |
X |
X |
L |
D、C、B、A |
計數(shù) |
H |
↑ |
H |
H |
H |
+1 |
保持 |
H |
X |
L |
X |
H |
QD、QC、QB、QA |
保持 |
H |
X |
X |
L |
H |
QD、QC、QB、QA |
注:進位輸出端RC=Q3&!Q2&!Q1&Q0&T
三、設(shè)計內(nèi)容
本實驗要完成的任務(wù)就是實現(xiàn)中規(guī)模集成電路74LS160的功能,觀察其工作時序,并下載到芯片中觀察其實際工作過程。
實驗時為了便于觀察,需經(jīng)分頻得到1Hz時鐘,用撥擋開關(guān)的SW1A~SW4A作為計數(shù)器的輸入D,按鍵F3和F4作為計數(shù)器的控制允許P和T信號,F(xiàn)2作為清除輸入CLR,用按鍵開關(guān)模塊的F1作為LOAD信號(注意:由于計數(shù)器采用的是1Hz時鐘,而裝載數(shù)據(jù)是在時鐘信號的上升沿作用下進行,所以要想正確的加載預(yù)制數(shù)據(jù),F(xiàn)1按鍵必須按住至少1s以上才可以),用七段數(shù)碼管模塊中的某一位作為計數(shù)器的輸出Q指示,用LED8作為計數(shù)器的輸出翻轉(zhuǎn)信號RC指示。
四、設(shè)計結(jié)果
1、74LS160源程序:
module A74LS160(clr,clk,et,ep,load,datain,dataout,rc,smg);
input clr,clk,et,ep,load;
input [3:0] datain;
output [6:0] smg;
reg [6:0]smg;
output [3:0] dataout;
output rc;
reg rc;
reg clk2;
reg [3:0] q1;
reg [8:0] cnt;
wire clr;
parameter n=50000000;
always@(posedge clk)
begin
if(cnt<(n/2-1))
begin
cnt<=cnt+1'b1;
clk2<=clk2;
end
else
begin
cnt<=9'd0;
clk2<=~clk2;
end
end
always@(posedge clk2 or negedge clr)
begin
if(clr==0)
begin
q1<=4'd0;
end
else
begin
if(clk2==1&load==0)
q1=datain;
else if(clk2==1&load==1)
begin
if(ep==1&et==1&q1<4'd10)
begin
q1=q1+1;
rc=0;
end
else if((et&ep)==0)
begin
q1=q1;
rc=0;
end
else if(q1==4'd10)
rc=1;
end
end
end
assign dataout=q1;
always@(dataout)
begin
case(dataout)
4'b0000:smg=7'b0000001;
4'b0001:smg=7'b1001111;
4'b0010:smg=7'b0010010;
4'b0011:smg=7'b0000110;
4'b0100:smg=7'b1001100;
4'b0101:smg=7'b0100100;
4'b0110:smg=7'b1100000;
4'b0111:smg=7'b0001111;
4'b1000:smg=7'b0000000;
4'b1001:smg=7'b0001100;
4'b1010:smg=7'b0001000;
endcase
end
endmodule
2、仿真波形圖:
上圖為未分頻仿真74LS160在普通計數(shù)模式下的結(jié)果。
上圖為未分頻仿真74LS160預(yù)置數(shù)為6的結(jié)果。
上圖為未分頻仿真74LS160保持輸出為0不變功能結(jié)果。由于50M分頻時仿真時鐘波形不夠顯示50000000次時鐘波形,所以計數(shù)器模塊輸出結(jié)果未顯示出,便不再附圖。
3、管腳約束:
4、下載到試驗箱上的結(jié)果:
上圖為模塊EP、ET、LOAD、CLR端完全置1,處于普通計數(shù)模式時數(shù)碼管的計數(shù)顯示結(jié)果,此模式下計數(shù)顯示每隔一秒加一,同時也說明了時鐘50MHz被成功分頻為1Hz。
上圖為模塊EP端置0,ET、LOAD、CLR端完全置1,輸出結(jié)果保持不變的情況。同理模塊ET端置0,EP、LOAD、CLR端完全置1,也可達到保持的功能。
上圖為計數(shù)到10,進位端被置1,進位標(biāo)志位使LED熄滅的結(jié)果。
五、注意文章來源:http://www.zghlxwxcb.cn/news/detail-475987.html
將所有功能的程序糅雜在一個module中會使程序復(fù)雜化,難以改動,應(yīng)將爭取將其進行例化,采用模塊結(jié)構(gòu)描述,使程序更簡潔明了,更直觀,易改動易移植。文章來源地址http://www.zghlxwxcb.cn/news/detail-475987.html
到了這里,關(guān)于FPGA設(shè)計開發(fā)(基礎(chǔ)課題):74LS160計數(shù)器芯片設(shè)計的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!