FPGA課程設計報告

2021-03-14 14:57:59 字數 4488 閱讀 2826

西安郵電學院

題目:採用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 器件說...