計數器的方法實現可樂售賣機

2021-08-22 10:29:47 字數 1609 閱讀 4925

第一步,先將要求原理畫出來。

第二步,將以上原理用硬體語言描述出來。

module coal_ctrl(

input wire sclk,

input wire rst_n,

input wire pi_money,

output reg po_cola

);reg [1:0] cnt;

always@(posedge sclk or negedge rst_n)

if(!rst_n)

cnt<=1'b0;

else if(pi_money==1'b1)

cnt<=cnt+1'b1;

else if(cnt==2'b11&&pi_money==1'b1)

cnt<=cnt;

always@(posedge sclk or negedge rst_n)

if(!rst_n)

po_cola<=1'b0;

else if (cnt==2'b11&&pi_money==1'b1)

po_cola<=1'b1;

else

po_cola<=1'b0;

endmodule

需要說明的是,本人在第一次寫模組的時候。由於基礎薄弱,以為模組的if條件不能用輸入訊號,導致牛角尖。導致最後只能對時鐘訊號計數。所以觸發條件是可以用輸入訊號的。

第三步,寫測試模組。

`timescale 1ns/1ns

module tb_cola_ctrl();

reg sclk;

reg rst_n;

reg pi_money;

wire po_cola;

initial

begin

sclk=0;

rst_n=0;

pi_money=0;

#20rst_n=1;

endalways #20 sclk=~sclk;

always #50 pi_money=$random; //說明隨機產生的資料,可能大於1由於定義pi_money是乙個位寬,所以截留末位0或者1

coal_ctrl cola_ctrl_inst(

.sclk (sclk ),

.rst_n (rst_n ),

.pi_money (pi_money ),

.po_cola (po_cola )

);endmodule

**一定要多敲,測試檔案也要手寫。上面的**雖然沒問題,但在本人除錯的時候,module都拼寫錯誤,導致simulation測試的時候,測試模組與功能模組並行。而且在例化的時候,複製錯名字。

第四步,將測試結果和功能模組p出來。

微控制器實現秒錶倒數計數器

最近博主在學習微控制器的課程,這快到期末考試了,老師讓做個簡單的課設,我看了看老師給的課題,感覺這個比較容易實現,今天下午花了兩個小時左右的時間,把 程式電路圖畫好了,現在分享大家,希望大家批評改正。實驗器材 微控制器 按鈕 電阻 pnp型三極體 有源蜂鳴器 共陰極數碼管 實現的功能 通過按鍵實現倒...

PHP簡單實現文字計數器的方法

本文例項講述了ph簡單實現文字計數器的方法。分享給大家供大家參考,具體如下 www.cppcns.com63 php if file count file.txt else 更多關於php相關內容感興趣的讀者可檢視本站專題 php正規表示式用法總結 php ajax技巧與應用小結 php運算與運算子...

逆波蘭計數器 棧的實現

又稱字尾計數器 用棧把原式寫為逆波蘭式子,儲存在陣列裡面並列印。用棧根據逆波蘭式子的形式計算出結果。以下 include include include define initsize 20 define increase 5 typedef struct stack stack void init...