Verilog HDL的简单应用之74ls160功能的实现
結束嘍!
簡報
這是集成同步加法計數器,也是簡單元器件的FPGA實現系列的最后一篇。希望能夠對和筆者一樣剛剛接觸到FPGA的朋友們有所幫助,有所廣益。下面,筆者將對74ls16x(x=0,1,2,3)系列進行說明,并用Verilog HDL進行74ls160功能的實現。
引腳
該系列元器件均有1+1+1+2+4+4+1+2=16根引腳,其中包括1根時鐘信號引腳,1根清零信號引腳,1根置數信號引腳,2根計數使能信號引腳,4根數字輸入引腳,4根數字輸出引腳,1根進位引腳以及電源和接地引腳。下面為對其引腳的詳細說明。
代碼
`timescale 1ns / 1ps module x74x160(input clk,input CR_n,input LD_n,input EP,ET,input D,C,B,A,output reg RCO = 1'b0,output [3:0]Q);reg [3:0]data_in;assign Q = data_in;always@ (posedge clk or negedge CR_n)beginif(~CR_n)begindata_in <=4'b0;RCO <=1'b0;endelse if( ~LD_n )data_in <= { D, C, B, A };else if( ~EP | ~ET )data_in <= data_in; elsebegindata_in <= (data_in < 4'b1010) ? data_in + 1'b1 : 4'b0;RCO <= (data_in < 4'b1001) ? RCO : 1'b1;endend endmodule下面為74ls160在Verilog HDL中的仿真代碼:
module SIM;reg clk;reg CR_n;reg LD_n;reg EP,ET;reg D,C,B,A;wire RCO;wire [3:0] Q; x74x160 u1(clk,CR_n,LD_n,EP,ET,D,C,B,A,RCO,Q); initial beginclk=0;CR_n=1;LD_n=1;EP=0;ET=0;D=1;C=0;B=1;A=0; #100;CR_n = 0; #200;CR_n = 1; LD_n = 0; #200EP = 0; ET = 1; LD_n = 1; #200ET = 0;#100CR_n = 0;#100 CR_n = 1; #260EP = 1;ET = 1; end always #25 clk=~clk; endmodule當然,時鐘還是用的又細又短的那種(真的好方便啊@_@)
仿真效果
總之就是很可愛(〃‘▽’〃)
小結
眾所周知,天下沒有不散的宴席,天下沒有不勞的收獲。Verilog HDL的學習絕非朝日之功,跟隨別人的腳步永遠只能步其后塵。世上不存在完美的物件,這一系列的文章也一定會存在缺陷。為各位朋友提供某些環境(比如大一實驗室筆試╮(─▽─)╭)的試題答案不是我創作的意圖,一點也不是。這六篇文章(可能以后一時興起會再續更一些)僅僅是用來告訴各位剛剛接觸到Verilog HDL的朋友,不要看著Verilog HDL語法極其類似C/C++而認為可以直接著手某些協議的編寫,更不能認為自己C/C++基礎極好便可直接接單某些工程。相反,對于數電知識和邏輯方面嚴格的約束更要求初學者們從簡單處入手,在簡單處碰壁,在簡單處探索,在簡單處攻關,才能化簡為繁,完善思維,糾正風格,最后獲得能夠自主搭建一套嚴密的邏輯體系的能力,甚至,擺脫外族束縛,逐步走向自主研發。這才應當是我們學習技術的目的。
總結
以上是生活随笔為你收集整理的Verilog HDL的简单应用之74ls160功能的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java geojson_GEOJSON
- 下一篇: nginx负载均衡和高可用