Design Digital
Tổng quan kiến thức
* Cấu trúc:
* SPECIFICATION: khối SPEC
1) Đầu vào
- số bit : < bao nhiêu bit với 1 bit đầu vào
- dạng biểu diễn: số nguyên N, R, mã máy RISCV.
- ý nghĩa thông tin:. Ví dụ biểu diễn mã hóa tiếng nói hoặc 1 bit trong frame UART.
2) Đầu ra
3) Mô tả mối quan hệ in-output.
- bảng liệt kê các trường hợp.
Ví dụ:
x y
1 10
2 15
..v..v ..v.v.
với công thức : Y = FFT(X)
Mô tả bằng 1 thuật toán tính Y từ X
4) Các thông tin cần thêm.
+ hệ thống tổng thể chứa module cần thiết kế. < cơ sở cấu trúc>
+ cách hệ thống tổng thể tạo ra đầu vào.
+ cách module cần thiết kế đầu ra tới system.
* Sơ đồ cấu trúc:
Mô tả mqh X và Y => dùng sequence diagram và timing diagram.
II) Mô tả mạch logic tổ hợp
module comb(
input [7:0] x, // x: số nguyên cí dấu biểu diễn tiếng nói ở tần số 8MHz
output [7:0] y);
+ Mô tả mạch logic tổ hợp
1) Truth table
2) Biểu thức Boolean - < dataflow model
3) Mô tả dữ liệu
+ Mô tả bằng các cổng logic - < Mô hình cấu trúc
Truth table
s x1 x2 y
0 0 0 1
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 1
*Lệnh wire: định nghĩa các dây.
+ Mô hình hành vi : if else + always.
- phép gán trong khối lệnh thủ tục : là blocking asignment. - < y1 = x1
=>yêu cầu y1 phải khai báo là reg:
< reg [7:0] y1,y2
Ví dụ:
Nếu không có else / default thì y luôn nhận giá trị ngay trước nó
LAB1: Mạch led7 thanh.
Diễn giải: dùng 4 switch -> nhị phân 0,1 -> điều khiển 1 led 7 thanh
để -> 4 led 7 thanh
-Đối với 1 led 7 thanh => input 4 bit output 7 bit. Mối quan hệ: 4 switch là 4 bit đầu vào để có thể điều
khiển thanh <7 bit đầu ra> và led 7 thanh trên kit de2-115 là mắc theo anot chung nên tín ở mức thấp
thì đèn led sáng còn mức cao thì led tắt. Ta có bảng giải mã:
Đầu ra led 7 thanh <7 bit>
Đầu vào <4 switch> Hiển thị
<gfedcba>
0000 1000000 0
0001 1111001 1
0010 0100100 2
0011 0110000 3
0100 0011001 4
0101 0010010 5
0110 0000010 6
0111 1111000 7
1000 0000000 8
1001 0010000 9
=> SPEC
Input: 16bit tương ứng với 4 cụm 4 bit, mỗi cụm 2bit -> mã hóa 0-15
Output: số 28bit
->Định dạng 4 cụm 7bit
-> mỗi cụm 7bit điều khiển 1 led của led 7 thanh.
Mối quan hệ: Truth table
Tổng thể hệ thống
Kiến trúc
-> module top gồm 4 module giải mã 7 thanh với kết nối
-> code module giải mã 7 thanh
-> code phần tạo module giải mã 7 thanh
Triển khai trên FPGA
Tổng quan kiến thức
Mô phỏng mạch số
=> Dùng TIMING Diagram
TESTBENCH trong Verification
Chức năng:
1. tạo input
2. test automatic output
3. đo lường, hướng dẫn tính toán độ bao phủ
Tạo đầu vào:
1.Tạo trực tiếp :gán giá trị cụ thể tại time cụ thể như ví dụ trên -> nhanh chỉ sử dụng vài điểm.
2. tạo ra all giá trị input tại 1 time
3. tạo giá trị input ngẫu nhiên.
Kiểm tra output: tự động lặp lại nhiều lần.
1. tạo ra 1 mô hình hóa để tính output từ input dựa trên SPEC < golden output
2. so sánh và cảnh báo < golden output>
3. cảnh báo, thống kê.
Chú ý: không bao giờ gán reg ở 2 khối lệnh < do không kiểm soát được giá trị thực >
LAB 2 Implement các module và viết testbench
1. ALU hỗ trợ các phép toán ADD, SUD, NOT, AND, OR, XOR, with 2 input A,B : 32BIT – 1 ouput C, 1
input opcode, 8 phep to
2. Mạch majority for : số bit 1 > 0 => output 1 và ngược lại.
cho input 32 bit.
Syntax: for, if, repeat, parameter, localparameter.
3. Mạch cộng 8 bit dùng kiến trúc CRA
1.ALU. https://www.fpga4student.com/2017/06/Verilog-code-for-ALU.html
ALU self chính là opcode để xác định loại phép toán nào trong ALU.
Thêm 1 biến nhớ là biến ALU_carryout.
3. CRA < carry ripple adder > < mạch cộng 8bit đầu vào sử dụng kiến trúc Carry Ripple Adder
Input: gồm 2 input đầu vào 8 bit <x,y> , 1 cờ nhớ ngõ vào c_in 1 bit
Output: 1 ouput đầu ra là tổng s, 1 output là cờ nhớ ngõ ra c_out 1 bit
Mối quan hệ
Truth Table
x y C_in C_out s
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
Các output được tính toán theo:
s0 = x0 xor y0 xor c_in
si = xi xor yi xor c[i-1] < i € [1:7] > <c là cờ nhớ ngõ ra tạm
thời 7bit sau mỗi lần đưa vào bộ FULL adder
c0 = c_in and (x0 xor y0) or (x0 and y0)
ci = c[i-1] and (xi xor yi) or (xi and yi) < i € [1:6]
c_out = c[6] and (x7 and y7) or (x7 and y7)
+ Sử dụng 8 bộ full adder để có được đầu ra là c_out 1bit và sau mỗi bộ full adder sẽ đưa ra 1 cờ nhớ
ngõ ra tạm gọi là c để sử dụng cho bộ adder phía sau và đưa ra lần lượt các bit của output tổng s là 8bit.
Tổng quan kiến thức
*Thiết kế bộ cộng
Chú ý: trong code verilog luôn phải có else khi dùng if nếu không nó khi sai sẽ trả về left.
Haft Adder
Full Adder:
* Tổng hợp mạch số
1) Tổng hợp if- else => cũng phải thành mux
ví dụ:
2) If- else và mức ưu tiên
a) Nested if –else
If ở phía trên (phía trước) có mức
độ ưu tiên cao hơn và tương ứng với MUX ở gần đầu ra hơn.
b) If - else độc lập
Với if - else độc lập thì nhánh if ở phía dưới (phía sau có mức độ ưu
tiên cao hơn và tương ứng với MUX ở gần đầu ra hơn.
c) Khi các nhánh if thiếu else nhưng đầu ra có giá trị mặc định
3)
Tổng hợp lệnh case
a) Lệnh case mà các điều kiện lựa chọn là mutual exclusive
(Chú ý luôn cần nhánh default để chống tạo Latch)
=> Được tổng hợp thành mạch MUX nhiều đầu vào và không có mức độ
ưu tiên
b) Lệnh case mà các điều kiện lựa chọn là không mutual exclusive
Nhánh case phía trên sẽ có mức độ ưu tiên cao hơn => Tương ứng với
điều kiện ở MUX ở gần đầu ra hơn.
4) Câu lệnh for
Chỉ có lệnh lặp mà số lần lặp là xác định trước thì mới có thể tổng hợp .
Trước khi tổng hợp , phần mềm sẽ unroll vòng lặp các lệnh bên trong
vòng lặp thành các lệnh liên tiếp. Số lệnh = số lần lặp.
Ví dụ : mạch majority
Sẽ được unroll thành
* Mô tả flip-flop
Flip flop được mô tả trong Verilog bằng khối always nhạy với đồng hồ
Trong khối always có đồng hồ mô tả flip-flop cá phép gán là Non-
blocking <=. Khi có 2 phép gán non-blocking liên tiếp -> vế phải sẽ được
tính giá trị trước rồi biến vế trái mới được gán giá trị.
Ví dụ:
5) Bộ đếm
* Thiết kế module hóa
Ví dụ : Thiết kế bộ cộng n bit
1. SPEC
input: a, b [n-1:0]
output: s : n+1 bit
2. Kiến trúc
a) carry ripple adder – CRA
b) kiến trúc module hóa
16 bit adder = 4x4 bit adder
4 bit adder = 4x1 full adder
4 full adder = 2 Haft adder
Sử dụng generate.
LAB 3 Central Clock
1. SPEC
Dùng bộ chia tần số từ 50MHz xuống còn 1 Hz
để đếm được 1s
Sử dụng các bộ chia tần số 5 và 10: 1 bộ chia
div5 và 7 bộ chia div10. Bộ chia div10 được
ghép nối tiếp từ 1 bộ chia 5 và bộ chia 2
Đầu vào Kích cơ (bit)
clk_in 1 Tín hiệu xung
đồng hồ
50MHz
Đầu ra
clk_out 1 Tín hiệu xung
đồng hồ 1Hz
* Bộ chia 2
Xác định số flip flop: 2^n >= divide by number => n = 1.
Xác định bảng sự thật:
Chuyển đổi tần số sử dụng 1 flip flop D
Tại sườn dương của tần số đầu vào tần số đầu ra thay đổi trạng thái:
d: không thay đổi trạng thái.
* Bộ chia 5
Xác định số flip flop trong bộ chia 2: 2^n >= 5 => n = 3.
Thus n = 3. That means 3 flops will be required for the circuit.
Let the first flop be S0, second be S1 and third be S2. The output of the flops can be presented as S0 ′ ,
S1′ and S2′,
*Bộ chia 10= ghép nối tiếp 2 bộ chia 2 và chia 5
Module đếm giây
Đầu vào kích thước(bit)
rst_n 1 Tín hiệu reset không đồng bộ , tích cực mức thấp
Clk_1Hz 1 Tín hiệu xung đồng hồ với tần số là 1Hz
Inc_sec 1 Tín hiệu tăng giây
Rst_numb_sec 6 Giá trị so sánh với out_sec để reset
Đầu ra
inc_min 1 Tín hiệu thông báo tăng giá trị biến đếm phút
out_sec 6 Giá trị biến đếm giây
Mô tả chức năng
Ban đầu giá trị output_sec được gán = 0. Sau mỗi sườn dương của tín hiệu clk_out, nếu giá trị
output_sec < rst_numb_sec và rst_n = 1 thì sau đố output_sec tăng thêm 1 và inc_min = 0. Nếu giá trị
output_sec = rst_numb_sec sau đó giá trị output_sec = 0 và inc_mini
Khi tín hiệu rst_n = 0 được kích hoạt giá trị ban đầu inc_min và output_sec được đưa về 0
Module đếm phút
Đầu vào Kích thước (bit)
Rst_n 1 Tín hiệu reset không đồng bộ tích cực mức thấp
Inc_min 1 Tín hiệu tăng phút từ khối conuter_sec
rst_numb_min 6 Giá trị so sánh với output_min
clk 1 Tín hiệu xung đồng hồ với tần số là 1
Đầu ra
inc_hr 1 Tín hiệu thông báo tăng giá trị biến đếm giờ
out_min 6 Giá trị biến đếm phút
Mô tả chức năng
Gán giá trị ban đầu của đầu ra output_min = 0 và tăng inc_hr = 0.
Nếu giá trị inc_min có giá trị băng 0 giá trị out_min không thay đổi và inc_hr bằng 0
Nếu giá trị inc_min bằng 1
- Nếu out_min < rst_numb_min và rst_n = 1 giá trị đầu ra output_min tăng thêm 1 và inc_hr
- Nếu out_min = rst_numb_min giá trị đầu ra out_min trở về giá trị 0 và inc_hr bằng 1
Khi có tín hiệu rst_n giá trị đầu ra đưa về 0
Module đếm giờ
Mô tả chức năng
- Gán giá trị ban đầu đầu ra out_hr = 1 và inc_day = 0. .
Nếu giá trị inc_hr =0 giá trị đầu ra out_hr không thay dổi và inc_day có gía trị bằng 0
Nếu inc_hr có giá trị bằng 1
- Nếu out_hr < rst_numb_hr và rst_n = 1 giá trị đầu ra out_hr tăng thêm 1 và inc_hr bằng 0
- Nếu out_hr = rst_numb_hr giá trị đầu ra out_hr trở về giá trị 0 và inc_day =1.
Khi có tín hiệu rst_n giá trị đầu ra out_hr và inc_day được đua về giá trị 0
Module đếm ngày
Đầu vào Kích thước(bit)
Clk_1Hz 1 Tín hiệu xung đồng hồ với tần số là 1Hz
Rst_n 1 tín hiệu reset không đồng bộ tích cực mức thấp
inc_day 1 tín hiệu thông báo tăng giá trị biến đếm ngày tích cực mức cao
rst_numb_day 6 số ngày trong tháng
Đầu ra
inc_mon 1 Tín hiệu thông báo tăng giá trị biến đếm tháng
out_day 6 Giá trị biến đếm ngày
Mô tả chức năng
Gán giá trị ban đầu của đầu ra out_day =1 và inc_mon bằng 1
Nếu giá trị inc_day = 0 giá trị out_day không thay đổi và inc_mon có giá trị bằng 0
Nếu inc_day có giá trị bằng 1
-Nếu out_day < rst_num_day và rst_n =1 giá trị đầu ra out_day tăng thêm 1 và inc_mon bằng 0
- Nếu out_day = rst_numb_day giá trị đầu ra out_day trở về giá trị 1 và inc_mon
Khi có tín hiệu rst_n giá trị đầu ra out_day bằng 1 và inc_mon bằng 0
Module đếm tháng
Module đếm năm
Đầu vào Kích thước (bit)
Clk_1Hz 1 Tín hiệu xung đồng hồ với tần số là 1Hz
Rst_n 1 Tín hiệu reset không đồng bộ tích cực mức thấp
In_year 1 tín hiệu thông báo tăng giá trị biến đếm giờ tích cực mức cao
Đầu ra
out_year 6 giá trị biến đếm năm
Mô tả chức năng:
Gán giá trị ban đầu đầu ra out_year bằng 0
Nếu giá trị inc_year băng 0 giá trị đầu ra out_year không thay đổi
Nếu inc_year có giá trị bằng 1 giá trị đầu ra out_year băng 1
Khi có tín hiệu rst_n giá trị đầu ra out_year bằng 1
Module tính số ngày trong tháng
Đầu vào Kích thước
Rst_n 1 Tín hiệu reset không đồng bộ tích cực mức thấp
month 6 Giá trị tháng
year 6 Giá trị năm
Đầu ra
rst_numb_day 6 Số ngày trong tháng
Mô tả chức năng
Nếu giá trị của month và year không thay đổi rst_numb_day không thay đổi
Nếu giá trị month = {1,3,5,7,8,10,12} thì giá trị đầu ra rst_numb_day bằng 31
Nếu giá trị month = {4,6,9,11} thì giá trị đầu ra rst_numb_day băng 30
Nếu giá trị month = 2 kiểm tra nếu giá trị năm year là năm nhuận thì giá trị đầu ra rst_numb_day = 29
nếu không rst_numb_day bằng 28
Khi có tín hiệu rst_n giá trị rst_numb_day bằng 31
Giải mã hiển thị trên led 7 thanh
* Module extract_bit
Input numb 6 bit (số cần extract)
Out put : o_uint <led 7 thanh hàng đơn vị> , o_ten <led7 thanh hàng chục>
Gán o_uint là phần dư của phép chia numb cho 10 => o_uint = numb % 10.
Gán o_ten là phần nguyên của phép chia numb cho 10ten = numb / 10.
*Module hiển thị led 7 thanh cho số ở hàng đơn vị và hàng chục.
input : numb 6 bit
output led 7 thanh 7 bit
*Hiển thị giây, phút, giờ
Đầu vào kích thước (bit)
input 6 Số giay , phút, giờ
Đầu ra
led7seg1 7 Giá trị giải mã hiển thị chữ số hàng đơn vị của giá trị giây
led7seg2 7 Giá trị giải mã hiển thị chữ số hàng chục của giá trị giây
led7seg3 7 Giá trị giải mã hiển thị chữ số hàng đơn vị của giá trị phút
led7seg4 7 Giá trị giải mã hiển thị chữ số hàng chục của giá trị phút
led7seg5 7 Giá trị giải mã hiển thị chữ số hàng đơn vị của giá trị giờ
led7seg6 7 Giá trị giải mã hiển thị chữ số hàng chục của giá trị giờ
Mô tả chức năng
Ánh xạ giá trị input thành 2 giá trị đầu ra led7seg1.....seg6.
*Hiển thị ngày tháng năm
Mô tả hoạt động
Ánh xạ 4 số trên thành giá trị đầu ra.
*Sử dụng 1 switch để thay đổi hiển thị
Input swap 1 bit
swap = 0 => chuyển từ hiển thị giờ phút giây sang ngày tháng năm
swap = 1 => chuyển từ hiển thị ngày tháng năm -> giờ phút giây.
Kết quả mô phỏng
Tổng quan kiến thức
FSM
+ Biểu diễn toán học
-> y = lamda(x, s)
-> s’ = delta(x, s)
*Đồ thị chuyển trạng thái
FSM dạng Merly : đầu ra/ đầu vào.
FSM dạng Moore đầu ra / trạng thái.
Thiết kế:
1. bắt đầu trạng thái khởi tạo
2. Xét tất cả các đầu vào và xác định state kế tiếp ứng với các đầu vào đó.
a) tạo ra state mới nếu cần (khi có state vật lý/ thông tin)
3. Lặp lại cho đến khi không có state mới được tạo ra.
Ví dụ: phát hiện chuối bit 110 trong dòng bit đưa vào
SPEC:
x đầu vào 1b
Rst
clk đồng hồ
y: đầu ra -> 1 nếu chuối đầu vào 110
=> có sơ đồ trạng thái máy FSM
Mô hình Merly đầu ra phụ thuộc vào trạng thái hiện tại và các dữ liệu ngõ vào
Moore đầu ra chỉ phụ thuộc vào trạng thái hiện tại.
Lab4 Đèn giao thông
Mạch điều khiển đèn giao thông
Mô tả yêu cầu
Điều khiển cặp đèn giao thông theo hướng highway vs. country_road
Hướng highway sẽ luôn xanh Khi có xe chờ ở country_road thì highway sẽ sang vàng trong t (s), sau đó
sang đỏ và country_road sẽ sang xanh trong T (s)
Sau thời gian xanh, country road sẽ sang vàng trong t(s).
Sau đó country_road sẽ sang đỏ, highway sang xanh
SPEC
Đầu ra: led_highway, led_country: 3 bit mã hóa onehot tương ứng với 3 đèn xanh,đỏ,vàng
Đầu vào: car = 1 khi có xe ở vạch của country road
Đầu vào: clk, rst_n. clk ở tần số 50Mhz
Thiết kế kiến trúc:
+ Chức năng của mạch
1)điều khiển đèn highway
2)điều khiển đèn của country
3)đếm thời gian t
4)đếm thời gian T
Nhiệm vụ:
1)Code Verilog cho bộ điều khiển đèn giao thông (country, highway, t, T)
2)Xác định Hệ thống tổng thể chứa module cần thiết kế (sơđồ cấu trúc)
3)Xác định pin assignment của hệ thống tổng thể trên kit
4)Thực nghiệm trên kit
Sơ đồ khối
Highway road
Sơ đồ FSM
Input - output mối quan hệ
input – output
input number bit
Clk_1Hz 1 Tín hiệu xung đồng hồ 1Hz
Rst_n 1 Tín hiệu reset tích cực mức thấp
car 1 Tín hiệu có car xuất hiện ở countryroad
T_timeout 1 Tín hiệu đếm hết T
enable_H 1 Tín hiệu chuyển từ đỏ sang xanh của Highway đồng thời cũng là tín
hiệu chuyển từ Countryroad sang Highway road.
t_timeout 1 tín hiệu hết đèn vàng
Output số bit
opcode_H 3 Các trạng thái đèn (xanh đỏ vàng)
enable_C 1 Tín hiệu chuyển từ vàng sang đỏ của Highway đồng thời cũng là tín
hiệu chuyển từ Highway road sang Countryroad.
start_T 1 tín hiệu bắt đầu đếm T_timeout
start_t 1 tín hiệu bắt đàu đếm t_timeout
Mối quan hệ
Máy trạng thái FSM khai báo tín hiệu next_state.
-Gán opcode = next_state
+opcode = 100 khi có car và T_timeout -> start_t = 1, start_T = 0, next_state = 010.
+opcode = 010, khi có t_timeout -> start_T = 1, start_t = 0, enable_C = 1, next_state = 001.
+opcode = 001, khi có enable_H -> start_T = 1, next_state = 100.
- Có tín hiệu rst_n => reset opcode_H = 100, car = 0, start_t = 0, start_T = 1, enable_H = 1.
-Sườn dương -> opcode_H = next_state.
CountryRoad
Sơ đồ FSM
Input output - mối quan hệ:
input số bit
clk_1Hz 1 Tín hiệu xung đồng hồ 1Hz
rst_n 1 Tín hiệu reset tích cực mức thấp
T_timeout 1 tín hiệu đếm hết T s
enable_C 1 tín hiệu chuyển từ vàng sang đỏ của Highway đồng thời cũng là tín hiệu
chuyển từ Highwayroad sang Countryroad
t_timeout 1 tín hiệu hết đèn vàng
Output
opcode_C 3 các trạng thái đèn <xanh, vàng , đỏ>
enable_H 1 tín hiệu chuyển từ đỏ sang xanh của Highway đồng thời cũng là tín hiệu
chuyển từ CountryRoad sang HighwayRoad
start_T 1 tín hiệu bắt đầu đếm T_timeout
start_t 1 tín hiệu bắt đầu đếm t_timeout
Mối quan hệ
- Máy trạng thái FSM: khai báo tín hiệu next_state
+Gán opcode = next_state
opcode = 001, khi có enable_C -> start_T = 1, next_state = 100.
opcode = 100, khi có T_timeout -> start_T = 0, start_t =1, next_state = 010.
opcode = 010, khi có t_timeout -> start_T = 1, start_t = 0, enable_H = 1, next_state = 100.
+Có tín hiệu rst_n => reset opcode_H = 001, start_t = 0, start_T = 1.
+Sườn dương => opcode_H = next_state.
T timeout
input ouput mối quan hệ:
input số bit
clk_1Hz 1 tín hiệu xung đồng hồ 1Hz
rst_n tín 1 tín hiệu reset tích cực mức thấp
start_T 1 tín hiệu bắt đầu đếm T_timeout
ouput
T_timeout 1 tín hiệu đếm hết T s
cnt_T 6 số giây
Mối quan hệ
- có tín hiệu rst_n => T_timeout = 0, cnt_T = T s <T là parameter>
-Sườn dương => nếu có start_T:
nếu cnt_T = 0 -> T_timeout = 1, cnt_T = T.
nếu cnt_T = 1 -> T_timeout = 0, cnt_T = cnt_T -1
t timeout
input output mối quan hệ
input số bit
clk_1Hz 1 tín hiễu xung đồng hồ 1Hz
rst_n 1 tín hiệu reset tích cực mức thấp
start_t 1 tín hiệu bắt đầu đếm t_timeout
output
t_timeout 1 tín hiệu đếm hết t s
cnt_t 6 số giây
Mối quan hệ:
-có tín hiệu rst_n => t_timeout = 0, cnt_t = t(s) <t là parameter>
-sườn dương -> nếu có start_t:
+nếu cnt_t = 0 -> t_timeout = 1, cnt_t = t.
+nếu cnt_t = 1 -> t_timeout = 0, cnt_t = cnt_t - 1.
Tổng quan kiến thức
FSMD
- Interactive FSM : system gồm các FSM giao tiếp với nhau theo các giao
thức dựa trên cơ chế bắt tay:
Input : là đầu vào system hoặc đầu ra output của FSM khác.
Output: output system or input của FSM khác.
Hoạt động của FSM mô tả thông qua đồ thị tuần tự (Sequence Diagram)
2) FSMD:
Finite State Machine Datapath là system gồm:
+1: 1 main (control) FSM điều khiển hoạt động hệ thống
+2: 1 khối datapath tính toán các biến ( là 1 FSM thực hiện biểu diễn
không tường minh)
VD. KHối đếm ngày
Input
+end_day: 1bit kéo dài 1 clk: 50M, bằng 1 khi bộ đếm giờ = 24.
+month: 4bit biểu diễn tháng:12
+year: 7bit biểu diễn năm.
Output
+end_month: 1bit kéo dài 1 clk 50M, bằng 1 khi hết tháng.
+day: 5bit biểu diễn ngày từ 1->31.
Hoạt động
+khi có xung end_day : day++
+khi hết tháng thì end_month += 1 và day = 1.
year month day next_day end_month
x
x
leaf
leaf
2) kiến trúc khối đếm ngày (FSMD)
*) Số học và logic
vd: bộ x không dấu.
*) bộ nhân nối tiếp
tín hiệu bắt tay
B1) SPEC
mô tả bằng timing diagram:
Clk
Sn
Sbn
Start
Finish
Prod
B2) lưu đồ thuật toán -> triển khai:
Datapath:
-> thay đoạn code có [for] thành 1 FSM
TÀI LIỆU
Link code LAB1-2-3.
https://husteduvn-my.sharepoint.com/personal/cong_tv192729_sis_hust_edu_vn/_layouts/15/
onedrive.aspx?id=%2Fpersonal%2Fcong%5Ftv192729%5Fsis%5Fhust%5Fedu%5Fvn%2FDocuments
%2FDigital%20Design&ga=1
Link code LAB2.
https://husteduvn-my.sharepoint.com/personal/cong_tv192729_sis_hust_edu_vn/_layouts/15/
onedrive.aspx?id=%2Fpersonal%2Fcong%5Ftv192729%5Fsis%5Fhust%5Fedu%5Fvn%2FDocuments
%2Fbtvn&ga=1
SPEC LAB3.
https://distinct-yumberry-907.notion.site/Lab3-ng-h-th-k-d47f26e5c98144679f8b9ee9efc5aea1
Change Digital BCD Timer.
FPGA project 08 Part1 - Digital BCD Timer
Divide by 5.
https://verilogpractice.wordpress.com/2018/01/29/divide-by-5/?fbclid=IwAR34bWdkGhv5-
lQwwN5L1Ye5vi_YAyX9nsRgVI6BBEhM3PnFZTY9iGRUpbs
Link get license QuestarSim:
https://www.intel.com/content/www/us/en/docs/programmable/683472/23-1/and-software-
license.html?fbclid=IwAR17-_qfEGrdxGbMuHM2LcMcoJIQT39CAxta5hKsEv4-rLV_EooJQF14des
Setup environmental for QuestarSim:
export LM_LICENSE_FILE=/home/edabk/Desktop/LR-119701_License.dat:$LM_LICENSE_FILE
LAB4 .
SPEC LAB 4.
https://classy-hip-e22.notion.site/SPEC-LAB4-FSM-9d43f4ad41ee4ee0be974a4539b93a60
https://www.notion.so/SPEC-LAB4-FSM-9d43f4ad41ee4ee0be974a4539b93a60