当前位置:网站首页>[Digital IC manual tearing code] Verilog automatic beverage machine | topic | principle | design | simulation
[Digital IC manual tearing code] Verilog automatic beverage machine | topic | principle | design | simulation
2022-07-06 21:37:00 【myhhhhhhhh】
Preface
This series aims to provide 100% Accurate numbers IC Design / Verify the title of the hand tearing code link , principle ,RTL Design ,Testbench And reference simulation waveform , The content of each article is checked by simulation . The quick navigation links are as follows :
Odd frequency division
Even frequency division
Semi integer batch
decimal / Fractional frequency division
Sequence detector
Mode three detector
Beverage machine
Asynchronous reset , Simultaneous release
Edge detection ( Rising edge , Falling edge , On both sides )
Full adder , Half adder
Gray code to binary
single bit Cross clock domain ( Two beats , Edge synchronization , Pulse synchronization )
Sync FIFO
Ought to say , The hand tearing code link is in the interview process Both important and simple A part of , Compared with software jobs , Numbers IC Hand tear code Fixed topic , Limited number , It belongs to a link that must be scored in the whole interview , Outside this series , I also recommend numbers IC Job seekers use “HdlBits” Code Training
Links are as follows
HDLBits — Verilog Practice
Problem of automatic beverage machine
1. Use Verilog Design circuit , Complete the following functions : Each bottle of drink 1.5 element , You can only put in one coin at a time , Available input 0.5 And 1.0 Two kinds of coins , With change function .
Principle of automatic beverage selling machine
First , It is obvious that , This hand tearing code should be used State machine To complete
The distinction between States , We can classify according to the amount remaining in the beverage machine , Because there are only two kinds of coins ,0.5/1 element , therefore The state can be divided as follows
- IDLE: Reset state , Indicates that the balance in the beverage machine is 0 element
- s1: The balance of the beverage machine is 0.5 element
- s2: The balance in the beverage machine is 1 element
- s3: The balance in the beverage machine is 1.5 element ( Export drinks , No change )
- s4: The balance in the beverage set is 2 element ( Export drinks , Give change )
So for the input and output of this state machine
Input : Two of you input Represents the coin put ,input[1] Pulling up means investing one yuan ,input[0] Higher means investment 0.5 element , By default, only one coin can be inserted at a time .
Output :drink Represents the output of drinks ,coin Represents the output of coins .
Veilog Design
module drink_machine( clk ,rst_n, money,drink,coin);
input clk;
input rst_n;
input [1:0] money;
output drink;
output coin;
parameter IDLE = 3'd0, s1=3'd1 ,s2=3'd2, s3=3'd3,s4=3'd4;
reg [2:0] state,nstate;
[email protected](posedge clk or negedge rst_n)
begin
if(!rst_n)
state<=IDLE;
else
state<=nstate;
end
[email protected](*)
begin
case(state)
IDLE:nstate = money[1] ? s2 : (money[0] ? s1 :IDLE);
s1: nstate = money[1] ? s3 : (money[0] ? s2 : s1);
s2: nstate = money[1] ? s4 : (money[0] ? s3 : s2);
s3: nstate = money[1] ? s2 : (money[0] ? s1 :IDLE);
s4: nstate = money[1] ? s2 : (money[0] ? s1 :IDLE);
default nstate = IDLE;
endcase
end
assign drink = (state == s3 || state == s4)? 1:0;
assign coin = (state == s4)? 1:0;
endmodule
Testbench Design
module drink_machine_tb();
reg clk;
reg rst_n;
reg [1:0] money;
wire drink;
wire coin;
drink_machine u1 (.clk(clk),.rst_n(rst_n),.money(money),.drink(drink),.coin(coin));
always #5 clk = !clk;
always #10.001 money = {
$random} % 3;
initial
begin
clk = 0;
rst_n = 1;
#10
rst_n = 0;
#20
rst_n = 1;
#1000
$stop;
end
endmodule
Simulation results
from 20ns To 80ns In the process of , Cast Five cents a piece , One by one ,drink Output is 1.
Then , Cast a piece , Throw another piece ,drink Output is 1 At the same time coin Also output as 1
Other state jumps also meet expectations , Design establishment .
边栏推荐
- Redistemplate common collection instructions opsforlist (III)
- Is it profitable to host an Olympic Games?
- The use method of string is startwith () - start with XX, endswith () - end with XX, trim () - delete spaces at both ends
- 对话阿里巴巴副总裁贾扬清:追求大模型,并不是一件坏事
- Redistemplate common collection instructions opsforhash (IV)
- Yuan Xiaolin: safety is not only a standard, but also Volvo's unchanging belief and pursuit
- 在Pi和Jetson nano上运行深度网络,程序被Killed
- 互联网快讯:吉利正式收购魅族;胰岛素集采在31省全面落地
- js中,字符串和数组互转(二)——数组转为字符串的方法
- Technology sharing | packet capturing analysis TCP protocol
猜你喜欢
20220211 failure - maximum amount of data supported by mongodb
This year, Jianzhi Tencent
Shake Sound poussera l'application indépendante de plantation d'herbe "louable", les octets ne peuvent pas oublier le petit livre rouge?
PostgreSQL 修改数据库用户的密码
Aiko ai Frontier promotion (7.6)
[Li Kou brush questions] 32 Longest valid bracket
红杉中国,刚刚募资90亿美元
guava:Collections.unmodifiableXXX创建的collection并不immutable
JPEG2000-Matlab源码实现
50 commonly used numpy function explanations, parameters and usage examples
随机推荐
R语言做文本挖掘 Part4文本分类
Guava: use of multiset
1292_FreeROS中vTaskResume()以及xTaskResumeFromISR()的实现分析
numpy 下载安装
967- letter combination of telephone number
Redistemplate common collection instructions opsforzset (VI)
Acdreamoj1110 (multiple backpacks)
Why does MySQL index fail? When do I use indexes?
039. (2.8) thoughts in the ward
Redistemplate common collection instructions opsforlist (III)
KDD 2022 | realize unified conversational recommendation through knowledge enhanced prompt learning
20220211 failure - maximum amount of data supported by mongodb
袁小林:安全不只是标准,更是沃尔沃不变的信仰和追求
[Li Kou brushing questions] one dimensional dynamic planning record (53 change exchanges, 300 longest increasing subsequence, 53 largest subarray and)
红杉中国,刚刚募资90亿美元
Tips for web development: skillfully use ThreadLocal to avoid layer by layer value transmission
抖音将推独立种草App“可颂”,字节忘不掉小红书?
[interpretation of the paper] machine learning technology for Cataract Classification / classification
Replace Internet TV set-top box application through digital TV and broadband network
中国白酒的5场大战