西安郵電學院
題目:採用ram實現計數器及fpga功能驗證
院系: 電子工程學院
專業班級:
學生姓名:
導師姓名:
起止時間:2012-06-18至2012-06-29
2023年 07 月 01 日
1. 任務
用乙個10×8的雙口ram完成10個8位計數器,計數器的初值分別為1~10,時鐘頻率為1mhz,計數器計數頻率為1hz。
用fpga開發板上的按鍵作為計數器計數值的輸出選擇控制,數碼管 (或led)作為選擇計數器的計數值輸出。
2. 目的
採用ram實現計數器及fpga功能驗證
3. 使用環境 (軟體/硬體環境,裝置等)
前仿 modelsim
後仿 modelsim
fpga課程設計詳細內容
4.1 技術規範
1、先由ram的資料讀控制端在10個ram位址中預置的8位初值。
2、將ram儲存的資料作為計數器的初始值,由計數器的控制端和分頻器分頻的時鐘訊號1hz控制開始計數,暫停鍵暫停計數並同時存入ram中賦計數器初始值的儲存單元。
3、雙埠ram為10×8ram由乙個位址切換鍵按順序切換1~10個位址埠。
4.系統工作流程:切換埠 →→ ram預置初始值 →→ 讀出資料 →→
開始計數 →→ 七段顯示解碼器解碼 →→ 輸出到數碼管顯示。
5、 分頻:將時鐘頻率為1mhz分頻為計數器計數頻率1hz,用來進行秒計時。
4.2 設計方案,功能驗證方案,以及電路設計源**,功能**激勵源**及功能**結果報告:
1、 ram的功能模組:
wr rd
addr_in[3:0]
din [7:0dout[7:0]
ram:reg [7:0] ram[10:1] 10×8的ram儲存陣列10個字每個子8位
輸入端輸入位址 addr_in[3:0];
輸入資料 din[7:0];
上公升沿有效寫入訊號 wr;
輸出資料 dout[7:0];
上公升沿有效讀訊號 rd;
ram的位址切換:雙埠ram為10×8ram由位址切換鍵按順序切換1~10個位址埠
程式:input wr,rd;
input reset,clk_1mhz;
input addr_in;
wire[3:0] addr_in;
input[7:0] din;
wire[7:0] din;
output[7:0] dout;
reg[7:0] dout;
reg[7:0]mem[10 :1];
always@(posedge clk_1mhz ,negedge reset )
begin
if(!reset)
begin
mem[1]<=8'd1;mem[2]<=8'd2;
mem[3]<=8'd3;mem[4]<=8'd4;
mem[5]<=8'd5;mem[6]<=8'd6;
mem[7]<=8'd7;mem[8]<=8'd8;
mem[9]<=8'd9;mem[10]<=8'd10;
endelse if(wr == 1 && rd == 0)
mem[addr_in] <= din;
else if(rd == 1 && wr == 0)
dout <= mem[addr_in] ;
endendmodule
激勵模組:module test;
reg clk_1mhz,wr,rd,reset;
reg [7:0] din;
reg [3:0] addr_in;
wire[7:0] dout;
ram ram(wr,rd,reset,dout,clk_1mhz,din,addr_in);
initial
begin
reset=1'd1;clk_1mhz=1'd0;
wr=1'd0;rd=1'd0;
addr_in=4'd0;
#2 reset=1'd0;
#2 rd=1'd1;
#2 addr_in=4'd0;#2 addr_in=4'd1;
#2 addr_in=4'd2;#2 addr_in=4'd3;#2 addr_in=4'd4;
#2 addr_in=4'd5;#2 addr_in=4'd6;#2 addr_in=4'd7;
#2 addr_in=4'd8;#2 addr_in=4'd9;#2 addr_in=4'd10;
#3 rd=1'd0;wr=1'd1;
din=8'd60;
#3 din=8'd20;#3 din=8'd25;#3 din=8'd10;#3 din=8'd6;
endalways
forever begin
#1 clk_1mhz = ~clk_1mhz;
endendmodule
2、計數器的功能模組:
rdclk_1hz
dout [7:0] din[7:0]
start
stop count_reset
計數:開始計數 start
計數器復位 count_reset;
計數輸出 din[7:0];
計數暫停 stop;
程式: module jsq( dout, start,stop,din, clk_1hz,count_reset);
output [7:0] din;
input [7:0] dout;
input start,stop, clk_1hz,count_reset;
reg [7:0] din;
always @(posedge clk_1hz)
begin
if(!count_reset)din=dout;
else
if(din==8'd255) din = 8'd0;
else if((start == 1) && (stop == 0)) din = din+1;
else din=din;
endendmodule
激勵模組: module test;
wire [7:0] din;
reg [7:0] dout;
reg start,stop, clk_1hz,count_reset;
jsq ff( dout, start,stop,din, clk_1hz,count_reset);
initial
begin
stop=1'd0;
start=1'd0;
clk_1hz=1'd0;
count_reset=1'd0;
#2 dout=8'd1;
#3 count_reset=~count_reset;
#2 start=1'd1;
#30 start=~start;
#1 dout=8'd9;
#3 count_reset=~count_reset;
#2 start=1'd1;
endalways
forever begin
#1 clk_1hz = ~clk_1hz;
endendmodule
3、』數碼管的顯示功能模組:
din[7:0dout[7:0]
reset 復位時三位數碼管顯示為000.
程式:module **g(dout,hex_b,hex_s, hex_g);
input[7:0] dout;
output [7:0] hex_b;
output [7:0] hex_s;
output [7:0] hex_g;
reg [7:0] hex_b;
reg [7:0] hex_s;
reg [7:0] hex_g;
reg [3:0] dout_b;
reg [3:0] dout_s;
reg [3:0] dout_g;
always @(dout )
begin
begin
dout_b = dout/100;
dout_s = dout/10;
dout_g = dout%10;
case(dout_b)
4'd0:hex_b = 8'hc0;
4'd1:hex_b = 8'hf9;
4'd2:hex_b = 8'ha4;
4'd3:hex_b = 8'hb0;
4'd4:hex_b = 8'h99;
4'd5:hex_b = 8'h92;
4'd6:hex_b = 8'h82;
4'd7:hex_b = 8'hf8;
4'd8:hex_b = 8'h80;
4'd9:hex_b = 8'h90;
default: hex_b = 8'hc0;
FPGA課程設計報告
華北水利水電大學 north china university of water resources and electric power 電子設計自動化課程設計 題目i2c控制器 學院資訊工程學院 專業電子資訊工程 姓名學號指導教師 完成時間 2016.1.11 目錄摘要 1 引言 1 一 設計任...
球閥課程設計報告 ProE課程設計
一.課題名稱 球閥班級 12機自a1 小組成員 李軍帥 組長 李軍帥 二.球閥的功能和工作原理描述 1.球閥的工作原理 球閥的主要驅動原件是裝配於閥杆上端的扳手,球閥的啟閉元件是位於閥桿下端的球體。球閥的主要工作原理是 當給扳手施加某一轉矩,扳手驅動閥桿旋轉,閥桿將扳手的轉矩傳遞給位於閥桿下端的球體...
課程設計報告
數位電路課程設計報告 題目姓名 班級學號 同組人報告得分 南京航空航天大學金城學院 目錄一 課設內容及要求 1 設計任務 2 設計指標 二 設計方案 1 總體設計方案說明 2 模組結構與方框圖 三 電路設計與器件選擇 1 功能模組一 實際名 1 模組電路及引數計算 2 工作原理和功能說明 3 器件說...