實驗課作業:用verilog實現密碼鎖
剛開始學習verilog,自己寫了個密碼鎖,看上去有不少bug,不過在老師那裡過關了,是自己的第一個獨立完成的verilog程式,試著發個部落格記錄下,同樣也是第一次發部落格。
下面貼程式碼,先是消抖部分:
module mimasuo(clk,key_in,led,rst,led_test);
input clk;
input [3:0] key_in;
input rst;
output [2:0]led;
output [2:0]led_test;
reg [23:0] count;
reg [3:0] key_scan;
[email protected](posedge clk or negedge rst)
begin
if(rst)
count <= 24'd0;
else begin
if(count == 24'd3999999)
begin
count <= 24'b0;
key_scan <= key_in;
end
else
count <= count + 24'b1;
end
end
reg [3:0] key_scan_r;
[email protected](posedge clk)
key_scan_r <= key_scan;
wire [3:0] flag_key = key_scan_r[3:0] & (~key_scan[3:0]);
之後是狀態機:下面是激勵程式碼:reg [3:0] ouut; [email protected](posedge clk or negedge rst) begin if(rst) ouut <= 4'b0000; else begin if(flag_key[0]) ouut[0] <= 1; if(flag_key[1]) ouut[1] <= 1; if(flag_key[2]) ouut[2] <= 1; if(flag_key[3]) ouut[3] <= 1; end end reg [2:0] led_temp; reg [32:0] cnt; reg [2:0] led_test_output; parameter s0 = 3'd7,s1 = 3'd6,s2 = 3'd4,s3 = 3'd0,s4 = 3'd5;
[email protected] (posedge clk) begin if(rst) begin led_test_output <= 0; led_temp <= s0; cnt <= 0; end else begin if(ouut[0]) begin cnt <= cnt +1; if (cnt == 32'd199999999) begin led_temp <= s4; cnt <= 0; end else begin case(led_temp) s0:begin if(ouut[1]) begin led_temp <= s1; end else begin led_temp <= s0; end end s1:begin if(ouut[2]) begin led_temp <= s2; end else begin led_temp <= s0; end end s2:begin if(ouut[3]) begin led_temp <= s3; end else begin led_temp <= s0; end end s3:begin if(flag_key[1]) led_test_output[0] <= ~led_test_output[0]; if(flag_key[2]) led_test_output[1] <= ~led_test_output[1]; if(flag_key[3]) led_test_output[2] <= ~led_test_output[2]; end s4:begin led_temp <= s4; end endcase end end end end assign led[0] = led_temp[0]; assign led[1] = led_temp[1]; assign led[2] = led_temp[2]; assign led_test[0] = led_test_output[0]; assign led_test[1] = led_test_output[1]; assign led_test[2] = led_test_output[2]; endmodule
module mimasuot;
reg clk;
reg [3:0]key_in;
reg rst;
wire [2:0]led;
wire [2:0]led_test;
mimasuo uut(
.clk(clk),
.key_in(key_in),
.rst(rst),
.led(led),
.led_test(led_test)
);
initial begin
clk = 1;
forever #25 clk = ~clk;
end
initial begin
rst = 1;
#100;
rst = 0;
key_in = 4'b0000;
#100;
key_in = 4'b0001;
#200000000;
key_in = 4'b0000;
#10000;
key_in = 4'b0010;
#200000000;
key_in = 4'b0000;
#10000;
key_in = 4'b0100;
#200000000;
key_in = 4'b0000;
#10000;
key_in = 4'b1000;
#200000000;
key_in = 4'b0000;
#10000;
key_in = 4'b0010;
#200000000;
key_in = 4'b0100;
#200000000;
key_in = 4'b0000;
#200000000;
$stop;
end
endmodule
再貼個模擬圖:模擬是用vivado自帶的模擬軟體做的,modelsim做需要斷網才行,這個問題試了好多辦法都沒解決,只好用vivado自帶的。這個是個比較簡單明瞭的程式,所以也沒寫什麼解釋,不過用來解決大作業足矣。
後面準備學習DDR3和eMMC的除錯,這個就算是上手訓練吧。
相關推薦
實驗課作業:用verilog實現密碼鎖
剛開始學習verilog,自己寫了個密碼鎖,看上去有不少bug,不過在老師那裡過關了,是自己的第一個獨立完成的verilog程式,試著發個部落格記錄下,同樣也是第一次發部落格。 下面貼程式碼,先是消抖部分:module mimasuo(clk,key_in,
作業2:用Verilog語言實現二十進位制計數器
1.新建一個工程,並且加入一個Verilog-HDL檔案,參考例程中的程式碼編寫Verilog語言,編寫完成後如下圖所示 編譯後,檢視RTL檔案如下圖所示 建立VWF檔案,新增模擬訊號後觀察模擬結果如下圖
吳恩達深度學習課程第二課第一週第一次作業:用神經網路簡單預測結果
# coding: utf-8 # # Initialization # Welcome to the first assignment of "Improving Deep Neural Networks". # # Training your neural
機器學習實驗(四):用tensorflow實現卷積神經網路識別人類活動
在近幾年,越來越多的使用者在智慧手機上安裝加速度感測器等一些裝置,這就為做一些應用需要收集相關的資料提供了方便。人類活動識別(human activity recognition (HAR))是其中的一個應用。對於HAR,有很多的方法可以去嘗試,方法的performance很大程度上依賴於特徵工程。傳統的機
最課程階段大作業03:用半天實現淘寶首頁?
每一個在最課程學習的學生,到了最後幾乎都會來問我一個問題:老師,是不是實際的開發中,都會有一個前端開發工程師,把靜態頁面做好了,然後才交給我們後臺開發啊? 我只能說:你想多了。 我知道你這麼問的意思,HTML+CSS+各類前端框架學習起來太繁瑣了,是不是就沒有
跟著吳恩達學深度學習:用Scala實現神經網路-第二課:用Scala實現多層神經網路
上一章我們講了如何使用Scala實現LogisticRegression,這一張跟隨著吳恩達的腳步我們用Scala實現基礎的深度神經網路。順便再提一下,吳恩達對於深度神經網路的解釋是我如今聽過的最清楚的課,感嘆一句果然越是大牛知識解釋得越清晰明瞭。 本文分為以下四個部分。
跟著吳恩達學深度學習:用Scala實現神經網路-第一課
1. Introduction 2017年8月,前百度首席科學家吳恩達先生在twitter上宣佈自己從百度離職後的第一個動作:在Coursera上推出一門從零開始構建神經網路的Deep Learning課程,一時間廣為轟動。
小練習:用socket實現Linux和Windows之間的通信
ren argc 漏洞 markdown tex sockets acc sas -m 在日常生活中,絕大部分人使用的機器通常是windows系統,可是對於研發人員,開發、編譯等工作往往是建立在linux機器上。其實。在服務器方面,Linux、UNIX和
第三次作業:用戶體驗分析: 以 “南通大學教務管理系統微信公眾號” 為例
大學 nbsp 系統 關註 jpg dba back nav 推送 優點項目 1..給用戶及時快速反饋 能夠及時準確的推送四六級的相關消息等 2必要的提示和幫助文檔 在關註公眾號過後,會有相關教程和提示,能夠了解到如何使用該公眾號 3.Visual Clarity,
作業:用python編寫用戶名密碼輸入接口程序
pan 超過 div times += gpo print have int count = 0while count <3: username = input("username:") password = input("password:") ‘
案例:用python實現翻譯小程序
luchangshan5200案例:翻譯小程序 #實現一個翻譯小程序 #1 可以查詢單詞 #2 可以自定義補充單詞解釋 #3 可以刪除某個單詞 print(‘歡迎來到大寶dayday見小詞典‘.center(30,‘-‘)) orig_dict = {‘中文‘:‘chinese‘,‘代碼‘:‘code‘,‘
第一次作業:使用java實現word count
proc ref 存儲 num idt command 一個 stat n) github項目地址: https://github.com/changrui520/homework 作業要求: 可執行程序命名為:wc.exe。 該程序處理用戶需求的模式為:wc.exe
DLL注入:用CreateRemoteThread實現DLL注入
實驗環境:WINXP VS2010 功能:注入到notepad.exe程式,並從網上下一個檔案 實驗程式: (一)myhack.dll,即要注入的dll程式 #include "windows.h" #include "tchar.h" #pragma comment(lib,"url
類方法實現:用python實現一個簡單的單詞本,添加/查找/刪除單詞。
end code div keys style 成功 move print utf 1.實現一個簡單的單詞本,功能: ①添加單詞,當所添加的單詞已存在時,讓用戶知道 ②查找單詞,當查找的單詞不存在時,讓用戶知道 ③刪除單詞,當刪除的單詞不存在時,讓用戶知道 以上
基於硬體的C(C++)語言程式設計教程12:用函式實現2數之和
本系列文章希望探討以硬體為平臺講述C(C++)知識的一個新的途徑,改變目前大多數C語言教程僅注重C語言本身的語法規則,而脫離其應用環境的現狀。希望讀者通過本教程的學習,能夠立刻學以致用,真正將所學知識應用到專案實踐中。 開發環境:Atmel Studio 7.0 硬體平臺:Microch
練習三十二:用python實現:按相反的順序輸出列表的每一位值
用python實現:按相反的順序輸出列表的每一位值 1. 使用list[::-1] 1 list1 = ["one","two","three","four"] 2 for i in list1[::-1]:#list[::-1]結果為列表的反向 3 print(i) 2. 使用l
機器學習實戰:用nodejs實現人臉識別
機器學習實戰:用nodejs實現人臉識別 在本文中,我將向你展示如何使用face-recognition.js執行可靠的人臉檢測和識別 。 我曾經試圖找一個能夠精確識別人臉的Node.js庫,但是
實戰:用Python實現隨機森林
因為有Scikit-Learn這樣的庫,現在用Python實現任何機器學習演算法都非常容易。實際上,我們現在不需要任何潛在的知識來了解模型如何工作。雖然不需要了解所有細節,但瞭解模型如何訓練和預測對工作仍有幫助。比如:如果效能不如預期,我們可以診斷模型或當我們想要說服其他人使用我們的模型時,我們可以向他們解
Python每日一題:第4題:用Python實現斐波那契數列
這是Python之禪和他朋友們在知識星球的第4題:用Python實現斐波那契數列 斐波那契數列(Fibonacci)最早由印度數學家Gopala提出,而第一個真正研究斐波那契數列的是義大利數學家 Leonardo Fibonacci,斐波那契數列的定義很簡單,用數學函式可表示為: 數列從0
用Verilog實現接受0.5元,1元的可樂售賣機,單價2.5元,考慮找零和出貨。
第一步:畫出原理圖 第二步,將畫出的原理圖利用硬體語言實現 module fsm_cola_ctrl( input wire sclk, input wire rst_n, input wire [1:0]pi_money, output reg po_col