用verilog實現搶答器
[color=darkred][size=medium]此搶答器用非同步時序電路實現。[/size][/color][size=medium]非同步時序電路,顧名思義就是電路的工作節奏不一致,不存在單一的主控時鐘,主要是用於產生地址譯碼器、FIFO和非同步RAM的讀寫控制訊號脈衝。除可以使用帶時鐘的觸發器外,還可以使用不帶時鐘的觸發器和延遲元件作為儲存元件;電路狀態的改變由外部輸入的變化直接引起。由於非同步電路沒有統一的時鐘,狀態變化的時刻是不穩定的,通常輸入訊號只在電路處於穩定狀態時才發生變化。也就是說一個時刻允許一個輸入發生變化,以避免輸入訊號之間造成的競爭冒險。[/size]
對應的verilog程式碼為:
功能模擬如圖:
[img]http://dl.iteye.com/upload/attachment/374144/9be308c5-3940-38d3-8e57-6e22f42e1ad6.bmp[/img]
對應的verilog程式碼為:
module QiangDaQi(emcee, actor_1, actor_2, actor_3, actor_4, num);
input emcee;
input actor_1;
input actor_2;
input actor_3;
input actor_4;
output [2:0] num;
reg [2:0] num = 0;
reg [3:0] flag = 0;
reg enable = 0;
reg cnt = 0;
always @(emcee or actor_1 or actor_2 or actor_3 or actor_4) begin
if(!emcee) begin
enable = 1'b1;
cnt = 1'b1;
end
else begin
enable = cnt && actor_1 && actor_2 && actor_3 && actor_4;
cnt = 0;
end
end
always @(negedge emcee or negedge actor_1) begin
if(!emcee) begin
flag[0] <= 0;
end
else begin
if(enable)
flag[0] <= 1;
else
flag[0] <= flag[0];
end
end
always @(negedge emcee or negedge actor_2) begin
if(!emcee) begin
flag[1] <= 0;
end
else begin
if(enable)
flag[1] <= 1;
else
flag[1] <= flag[1];
end
end
always @(negedge emcee or negedge actor_3) begin
if(!emcee) begin
flag[2] <= 0;
end
else begin
if(enable)
flag[2] <= 1;
else
flag[2] <= flag[2];
end
end
always @(negedge emcee or negedge actor_4) begin
if(!emcee) begin
flag[3] <= 0;
end
else begin
if(enable)
flag[3] <= 1;
else
flag[3] <= flag[3];
end
end
always @(flag) begin
case(flag)
4'b0000: num = 3'b000;
4'b0001: num = 3'b001;
4'b0010: num = 3'b010;
4'b0100: num = 3'b011;
4'b1000: num = 3'b100;
endcase
end
endmodule
功能模擬如圖:
[img]http://dl.iteye.com/upload/attachment/374144/9be308c5-3940-38d3-8e57-6e22f42e1ad6.bmp[/img]
相關文章
- 【微控制器彙編實戰】基於51微控制器的搶答器設計
- 智力競賽搶答器的設計與除錯除錯
- verilog實現乘法器
- verilog 中實現 sram 程式碼
- Verilog實現加減乘除運算
- 用verilog/systemverilog 設計fifo (1)
- 用verilog/systemverilog 設計fifo (2)
- QQ搶紅包外掛實現
- verilog實現矩陣卷積運算矩陣卷積
- Verilog設計技巧例項及實現
- FPGA排序模組與verilog實現【含原始碼!!!】FPGA排序原始碼
- VIVADO vhdl verilog 實現矩陣運算矩陣
- verilog使用Mealy電路實現交通燈
- php+redis實現搶購功能PHPRedis
- 微信小程式搶紅包實現效果微信小程式
- 搶紅包案例分析以及程式碼實現
- C#實現搶紅包演算法C#演算法
- Verilog乘法的實現——幾種使用多級流水實現方法對比(2)
- 5分鐘實現呼叫ChatGPT介面API實現多輪問答ChatGPTAPI
- 搶紅包案例分析以及程式碼實現(四)
- 搶紅包案例分析以及程式碼實現(三)
- 搶紅包案例分析以及程式碼實現(二)
- python實現自動搶課指令碼Python指令碼
- 搶購活動的粗略設計和實現
- canvas實現簡答動畫張閉嘴效果Canvas動畫
- 學習筆記-Verilog實現IIC匯流排協議筆記協議
- RGB2YUV 的verilog實現(RGB轉YUV)
- 用 Gulp 來實現 Web 伺服器Web伺服器
- python+selenium實現自動搶票Python
- 基於 Redis 實現基本搶紅包演算法Redis演算法
- 10個關於linux中Squid代理伺服器的實用面試問答LinuxUI伺服器面試
- 用PHP實現高併發伺服器PHP伺服器
- 用原生js實現圖片輪播器JS
- 用 Python 實現 Python 直譯器Python
- 轉:用Perl實現單詞計數器
- Python3實現搶火車票功能(下)Python
- 使用redis watch實現秒殺搶購,避免超賣Redis
- golang實現併發爬蟲三(用佇列排程器實現)Golang爬蟲佇列