0% found this document useful (0 votes)
12 views59 pages

Digital Design

Digital design

Uploaded by

tranquochuwng
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views59 pages

Digital Design

Digital design

Uploaded by

tranquochuwng
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 59

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

You might also like