1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO CÁO TUẦN 4ĐỊNH THÌ FLIP-FLOPSetup and Hold time

35 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo Cáo Tuần 4 Định Thì Flip-Flop Setup and Hold Time
Trường học Trường Đại Học Kỹ Thuật
Chuyên ngành Kỹ Thuật Điện
Thể loại báo cáo
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 35
Dung lượng 796,79 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

BÁO CÁO TUẦN 4 ĐỊNH THÌ FLIP-FLOPSetup and Hold time Là khoảng thời gian mà tín hiệu đầu vào của Flip-Flop không được thay đổi.. Vì khi tín hiệu của Flip-Flop thay đổi từ 10 hay từ 01

Trang 1

BÁO CÁO TUẦN 4 ĐỊNH THÌ FLIP-FLOP

Setup and Hold time

Là khoảng thời gian mà tín hiệu đầu vào của Flip-Flop không được thay đổi

Vì khi tín hiệu của Flip-Flop thay đổi từ 10 hay từ 01 thì trong lúc thay đổi sẽ điqua vùng không xác định giữa 1 và 0 Nếu đúng lúc này xuất hiện cạnh xung

“Clock” thì đầu vào được “bắt” là không xác định Lúc này ngõ ra Flip-Flop rơi vào trạng thái không xác định (gọi là metastable)

Nguyên nhân dẫn đến vi phạm setup và hold time là do tín hiệu ngõ vào trên đường truyền bị suy hao và rơi vào vùng không xác định là mức 0 hay mức 1  không phải là nguyên nhân chính yếu ???

Setup time : là khoảng thời gian cần thiết mà tín hiệu đầu vào ổn định trước

khi xuất hiện xung “Clock”

Hold time : là thời gian cần thiết mà tín hiệu đầu vào vẫn không đổi sau khi

có xung “Clock”

Metastable : Nếu vị phạm setup time và hold time thì trạng thái metastable

xảy ra Ngõ ra của Flip-Flop trong trạng thái không xác định ( không biết là mức 0hay mức 1), nhưng trạng thái này chỉ xuất hiện một thời gian và sau đó sẽ đạt mức

ổn định Có nghĩa là sau một thời gian “undefined” thì sẽ “settles-down” về 0 hay

1 Và yếu tố về 0 hay về 1 là ngẫu nhiên và không biết trước được Và thời gian xảy ra “metastable” kéo dài bao lâu là do công nghệ của nhà sản xuất ra Flip-Flop

Trang 2

Như vậy, để tránh trường hợp này xảy ra khi thiết kế mạch số ta cần phải lưu

ý đến vấn đề thời gian (định thời ???) Ta xét ví dụ sau:

• Vi phạm Setup Time:

Tc: chu kì xung clock

tpcq: thời gian từ khi xung clock đưa tín hiệu ngõ vào đến ngõ ra

tpd : thời gian tính toán mạch combination logic

tskew: thời gian tín hiệu clock nằm trong vùng không xác định khi chuyển từ 0lên 1

Như vậy, nếu không muốn vi phạm setup time thì ta phải tính toán thời gian tpcq sao cho sau khi ổn định không rơi vào vùng tsetup

Trang 4

Ghép nối tiếp hai Flip-Flop với nhau :

Dựa vào đặc tính của metastable là ngõ ra Q sẽ không ổn định Sau một thời gian thì trạng thái metastable sẽ mất và lúc này ngõ ra Q sẽ giữ ổn định ở mức 0 hay mức 1 Do đó, đối với Flip-Flop thứ hai thì ngõ vào gần như là ổn định

o Nếu trong trường hợp xấu nhất xảy ra Có nghĩa là delay của Clock từ FF1 đến FF2 bằng với delay để chuyển tín hiệu không xác định từ ngõvào FF1 đến ngõ ra FF1 thì FF2 cũng bắt được tín hiệu không xác định

o Như vậy, ghép thêm 1 Flip-Flop nối tiếp nữa là sẽ an toàn hơn khi sử dụng phương pháp này

Điều chỉnh vị trí thanh ghi hoặc chèn clock gate:

Việc sử dụng điều chỉnh vị trí thanh ghi hoặc chèn clock gate cũng có thể tránh được những vi phạm về setup time và hold time nhưng một số vi phạm về các vấn

Trang 5

đề timing khác sẽ xảy ra như (không đồng bộ được đường Clock của tất cả các Flip-Flop) nên không khuyến dụng cách này.

MÃ GRAY

Đối với các chuỗi số tăng tuần tự, việc chuyển giữa các trạng thái trong hệ đếm nhị phân có thể làm thay đổi nhiều bit từ 0 sang 1 và ngược lại Ví dụ, có 3 bitthay đổi khi chuyển từ 0011 đến 0100 Trong các hệ thống thực tế, không có cách nào đảm bảo rằng 3 bit này sẽ chuyển đổi cùng lúc với nhau, vì vậy hệ thống có thể

đi qua một số trạng thái tạm thời không ổn định trước khi chuyển đến giá trị cuối cùng Để tránh vấn đề này người ta dùng mã Gray, trong hệ thống mã này việc chuyển giữa các giá trị lân cận nhau sẽ chỉ thay đổi giá trị của 1 bit duy nhất

Dựa vào đặc tính như vậy, mã Gray được sử dụng rất hiệu quả để rút gọn hàm logic tới mức tối giản hoặc dùng để tối thiểu hóa sai số

Sơ đồ khối chuyển đổi mã Gray :

endmodule

Trang 7

 Cú pháp khai báo parameter :

parameter < signed > <range> name_1 = const_1

• signed : từ khóa cho biết parameter được khai báo kiểu có dấu hay không dấu

• range : dùng để khai báo độ rộng của parameter

• name_1 : tên của parameter cần khai báo

• const_1 : là giá trị của các parameter

Trang 8

defparam reg2 SIZE = 4;// xảy ra lỗi

Như vậy, ta có thể sử dụng defparam để thay đổi giá trị parameter “SIZE” trong module con là “register” Đây cũng là lợi điểm khi sử dụng defparam là nó

cho phép thay đổi giá trị của parameter của bất kì module nào có cấp độ thấp hơn

mà không cần phải ở cấp liền kề

Nhưng một khuyết điểm xảy ra khi thực hiện việc gọi defparam là : nếu một thiết kế lớn với số lượng dòng code lớn thì việc dùng defparam để thay đổi

Trang 9

giá trị parameter các module con là khó kiểm soát Vì thay đổi nhiều lần module con cùng lúc làm cho chức năng sai lệch đi.

o Truyền trực tiếp giá trị cho parameter :

CASE, CASEZ, CASEX

Cả ba loại của phát biểu trên đều có cú pháp hoàn toàn giống nhau, chỉ có

một điểm khác biệt duy nhất là từ khóa case, casex, casez  chỉ khác nhau từ khóa

???

 Cách sử dụng phát biểu case, casex và casez

Ta có thể sử dụng giá trị don’t care trong các phát biểu case Trong case, giá trị

x và z (hay ?) thì không được xem là don’t care mà chúng được xem là giá trị không xác định

Trang 10

Trong ví dụ này, khi biến “sel” có giá trị là 2’b100 thì nhánh default sẽ được

thực thi Vì trong case không hiểu ? là don’t care.

Nhưng trong casez thì dòng code trên thực thi đúng vì trong casez ? được

hiểu là don’t care Ta xét ví dụ sau :

Lúc này, khi ngõ vào “sel” có giá trị là 3’b101 thì nhánh default được thực

thi Vì trong casez giá trị x không được hiểu là don’t care.

Như vậy, ta rút ra kết luận sau :

• Case : chỉ hiểu giá trị xác định không dùng don’t care

• Casez : hiểu giá trị z và ? là don’t care

• Casex : hiểu giá trị x, z, ? là don’t care

Ví dụ : Sử dụng casex

module Dungcase ( sel, din1,din2,din3,dout);

input din1 ,din2,din3;

input [1:0] sel;

output dout ;

Trang 12

Ví dụ : Sử dụng casez

module Dungcase ( sel, din1,din2,din3,dout);

input din1 ,din2,din3;

MÃ HÓA MÁY TRẠNG THÁI

Việc lựa chọn mã hóa trạng thái khác nhau sẽ cho mạch tổng hợp có tài nguyên và tốc độ khác nhau Nhiều loại mã có thể sử dụng để mã hóa trạng thái như one-hot, binary tuần tự, gray…

Trang 13

• One-hot Encoding :

Mỗi bit trong thanh ghi trang thái sẽ quy định một trạng thái Chỉ có 1 bit là 1 còn tất cả các bit khác đều mang giá trị 0 Mã hóa One-Hot trong máy biến trạng thái là một kiểu mã hóa tốt Vì thế mã hóa kiểu One-Hot yêu cầu một số lượng lớn Flip-Flop, nó cung cấp một phương pháp đơn giản và dễ sử dụng tạo ra việc tối ưu hóa trong thiết kế máy trạng thái

Mã hóa One-hot là kiểu mã hóa có tốc độ cao nhất, và tốc độ này không phụ thuộc vào số lượng trạng thái mà chỉ phụ thuộc vào việc chuyển đổi giữa các trạng thái

Trong mã hóa kiểu One-Hot thì sẽ làm tăng tối đa số Flip-Flop (mỗi trạng thái

là một Flip-Flop) và làm giảm tối thiểu số cổng logic (làm nhỏ mạch Combination Logic)

Kết quả là khi sử dụng mã hóa One-Hot có thể tối ưu hóa về mặc sử dụng diện tích do các cổng logic được tối giản, do đó có thể tiêu thụ ít điện năng lượng hơn

• Mã hóa nhị phân Binary :

Trong mã hóa máy biến trạng thái bằng mã nhị phân thì ta có quan hệ giữa các biến trạng thái và số lượng trạng thái qua công thức sau:

Mã hóa nhị phân sử dụng ít FlipFlop hơn mã hóa One-Hot Thực chất cho thấy rằng chỉ cần 7 Flip-Flop có thể mã hóa 100 trạng thái trong khi đó mã One-Hot muốn mã hóa 100 trạng thái cần phải dùng tới 100 Flip-Flops

Trang 14

Như vậy, khi sử dụng tối thiểu số lượng Flip-Flop thì làm cho mạch tổ hợp (Combination Logic) lớn lên bởi vì cần các mạch logic để giải mã các trạng thái Phương pháp này thích hợp hơn cho việc sử dụng thiết kế các máy trạng thái ít hơn

8 trạng thái

Một nhược điểm của mã hóa nhị phân là khi chuyển trạng thái thì có thể có nhiều hơn 1-bit thay đổi và nó yêu cầu một mạch tổ hợp phức tạp để xác định các trạng thái hiện tại Dẫn đến tình trạng là tiêu tốn năng lượng nhiều hơn

• Gray Code Encoding :

Là kiểu mã hóa mà mỗi trạng thái kề cận nhau chỉ có 1-bit thay đổi mà thôi.Nói cách khác là chỉ có giá trị của một Flip-Flop thay đổi lúc mà các trạng thái thay đổi liên tục

Số flip-flop được xác định như sau:

Số biến trạng thái = số Flip-Flop = log2(số trạng thái)

Có nghĩa là 3-bit mã gray biểu hiện được 8 trang thái và số FF là 3

Mã hóa sử dụng mã Gray là để giảm tiêu tốn về năng lượng khi các trạng thái chuyển đổi nhiều và liên tục và trong trường hợp lý tưởng nghĩa là các trạng thái chuyển đổi theo một thứ tự kề cận nhau (S1->S2->S3->S4…) thì việc sử dụng kiểu mã hóa này là tối ưu và giảm thiểu năng lượng hoạt động của hệ thống một cách tối đa  tối ưu theo khía cạnh nào???

Cũng có thể cải thiện hơn nữa để làm giảm diện tích của các mạch tổ hợp (Combination Logic) từ đó tạo nên một lợi ích về năng lượng tiêu thụ

Trang 15

CHƯƠNG 3 : MODELING EXAMPLES 3.11 MODELING DECODER

assign DecodeOut [0] = ~( Enable&Abar&Bbar);

assign DecodeOut [1] = ~( Enable&Abar&B );

assign DecodeOut [2] = ~( Enable&A&Bbar);

assign DecodeOut [3] = ~( Enable&A&B);

Decoder2

Decoder3

Trang 16

Giải thích dạng sóng:

 Khi tín hiệu cho phép “Enable” =0 thì bất chấp ngõ vào A,B là giá trị nào thìngõ ra “DecoderOut” vẫn mang giá trị là 4’b1111

 Khi tín hiệu cho phép tích cực mức 1 thì quá trình giải mã được cho phép

Do tín hiệu ngõ ra tích cực mức thấp nên mỗi thời điểm trong 4 trạng thái của “DecoderOut” chỉ có 1 bit 0 xuất hiện mà thôi

3.11.2 BINARY DECODER

module BinaryDecoder (SelectAddress, DecodeOut);

parameter SBITS = 2;

parameter OUT_BITS = 4;

input [SBITS-1:0] SelectAddress;

output [OUT_BITS-1:0] DecodeOut;

reg [OUT_BITS-1:0] DecodeOut;

Trang 17

Do ngõ ra tích cực mức cao và không có tín hiệu cho phép “Enable” nên tại mỗi thời điểm lựa chọn địa chỉ “SelectAddress” thì chỉ có một bit ngõ ra tích cực mức cao Ta xem xét bảng trạng thái của bộ giải mã:

Decoder2

Decoder1

Decoder0

Trang 18

“DataIn” và 1 kênh ngõ ra “MuxOut”

Tai một thời điểm thì chỉ có dữ liệu của 1 kênh ngõ vào được chọn và đưa đến ngõ ra

Trang 19

3.12.2 A PARAMETERIZED MULTIPLEXER

module BinaryMultiplexer (DataBus, Select, Enable, Y,

Ybar);

parameter NBITS =2, WORDS=2;

input [NBITS*WORDS-1:0] DataBus;

input [WORDS-1:0] Select;

input Enable ;

output [NBITS-1:0] Y,Ybar;

reg [NBITS-1:0] Y,Ybar;

integer k ;

function [WORDS-1:0] GetWordIndex;

//Get the first index that has value 1

input [WORDS-1:0] DecodedSelect;

Trang 20

always @( DataBus or Select or Enable)

begin

Y='bz;

Ybar='bz;

end else

begin

Y='bx;

Ybar='bx;

end endmodule

Giải thích:

RTL trên có chức năng chọn kênh, dữ liệu được chọn là “DataBus” Khi tín hiệu chọn lựa “Select” có giá trị là 00,01,11 thì tín hiệu “DataBus[1:0]” được đưa đến ngõ ra “Y” Khi “Select” là 10 thì “DataBus[2:3]” được đưa đến ngõ ra “Y”

Giải thích dạng sóng :

Trang 21

Ta thấy rằng chỉ có thời điểm “Select” mang giá trị là 2’b10 thì

“DataBus[2:3]” mới được đưa đến ngõ ra “Y” Tất cả các lựa chọn còn lại thì ngõ

ra đều là “DataBus[1:0]” Ta xem sơ đồ khối sau :

3.13 MODELING A PARAMETERIZED PARITY GENERATOR

module ParityGenerator (DataIn, OddPar, EvenPar);

parameter N =4;

input [N-1:0] DataIn;

output OddPar , EvenPar;

assign EvenPar = ^DataIn;

assign OddPar =~EvenPar;

endmodule

Giải thích:

Trang 22

RTL trên có chức năng tạo ra bit Parity Nếu sử dụng phương pháp kiểm tra chẵn thì sử dụng tín hiệu “EvenPar” làm bit kiểm tra Ngược lại, với phương pháp kiểm tra lẻ ta sử dụng tín hiệu “OddPar” làm bit kiểm tra chẵn.

Giải thích dạng sóng :

Bằng cách kiểm tra số bit 1 của dữ liệu ngõ vào Khi “DataIn” có số bit 1 lẻ thì biến “EvenPar”=1 Khi “DataIn” có số bit 1 là chẵn thì tín hiệu “EvenPar” là 0

3.14 MODELING A THREE-STATE GATE

module ThreeStateGates (ReadState, CpuBus, MainBus);

Trang 23

Giải thích :

RTL trên mô tả chức năng của cổng 3 trạng thái, với tín hiệu điều khiển

“ReadState” Khi tín hiệu “ReadState” tích cực mức cao thì ngõ ra “MainBus” bị cách ly với ngõ vào nên ở trạng thái tổng trở cao

Khi “ReadState” tích cực mức thấp thì ngõ vào “CpuBus” được đưa đến ngõ

ra “MainBus”

3.15 A COUNT THREE 1’S MODEL

module Count3Ones (Data, Clock, Reset, SeqFound);

input Data , Clock, Reset;

Trang 24

Previous <= 3'b000;

SeqFound <= 1'b0;

end else begin

Previous <= {Previous[1:0],Data};

SeqFound <=

(Previous==PATTERN_SEARCHED_FOR);

end endmodule

Giải thích :

RTL trên có chức năng đếm ba bit 1 liên tiếp nhau Khi dữ liệu vào “Data” là

ba bit 1 liền kề nhau thì ngõ ra “SeqFound” sẽ có giá trị là 1 Ngược lại, toàn bộ giá trị ngõ ra “SeqFound” mang giá trị 0

Ta thấy rằng, do việc gán tín hiệu ngõ ra “SeqFound” dưới tác động của cạnh xuống xung “Clock” nên Flip-Flop đã được tạo ra cho biến này Dẫn đến sự bất lợi là khi đã có liên tiếp ba bit 1 xuất hiện mà ngõ ra vẫn chưa tích cực mà phải đợi đến cạnh xuống “Clock” tiếp theo Ta xét thêm ví dụ sau

module Count3Ones (Data, Clock, Reset, SeqFound);

input Data , Clock, Reset;

Trang 25

Previous <= {Previous[1:0],Data};

assign SeqFound = (Previous == PATTERN_SEARCHED_FOR);

endmodule

Giải thích:

Trong ví dụ đưa ra sau đây, ngõ ra “SeqFound” do không được gán dưới tác động của cạnh xuống “Clock” nên ngõ ra không tạo Flip-Flop cho biến

“SeqFound” Lúc này khi ngõ vào “Data” là ba bit 1 liên tiếp nhau thì ngõ ra

“SeqFound” lập tức tích cực mức 1 liền mà không cần đợi đến cạnh xuống “Clock”tiếp theo

3.16 A FACTORIAL MODEL

Trang 26

module Factorial (Reset, Start, Clk, Data, Done,

output [7:0] Result, Exponent;

reg [7:0] Result, Exponent;

if ((InLatch>1)&&(!Done)) begin

NextResult=Result*InLatch;

Result<=NextResult;

end end

endmodule

Giải thích:

Trang 27

RTL trên có chức năng tính giai thừa với dữ liệu ngõ vào là tín hiệu “Data”

và chỉ tính được tối đa là 15!

Vì dữ liệu ngõ ra “Result” là 8-bit nên không đủ thể hiện giá trị lớn hơn 255

Vì thế nếu kết quả lớn hơn 255 thì Kết quả hiển thị dưới dạng “Result*2Exponent”

Giải thích dạng sóng:

• Dữ liệu ngõ vào “Data”=6

• Kết quả trả về là 180*22=720 tương đương với 6!

3.17 UART MODEL

DIV

module DIV (CK, RESET, TESTN, ENA);

input CK , RESET, TESTN;

Trang 28

3.17 UART MODEL (RX)

module RX (CK, RESET, ENA, DIN, RD, DR,

DOUT,PERR,FERR,OERR);

input CK , RESET, ENA, DIN, RD;

output DR ;

output [7:0] DOUT;

output PERR , FERR, OERR;

reg DR ;

reg PERR ,FERR,OERR,START;

reg [3:0] CBIT, CSAM;

reg DI , PI;

reg [7:0] SR;

reg [7:0] DOUT;

Trang 30

else //((0<=CSAM<8)||(8<CSAM<15))

CSAM<=CSAM+1;

end end endmodule

Giải thích :

Trang 31

RTL trên mô tả khối RX trong khối UART Khối RX có chức năng nhận tín hiệu “DNA” từ khối “DIV” báo hiệu quá trình nhận dữ liệu bắt đầu thực hiện.

Chức năng chính của khối RX này là nhận dữ liệu ngõ vào nối tiếp và đưa

dữ liệu ngõ ra song song, kết hợp với một số tín hiệu điều khiển và tín hiệu Parity

Ta phân tích dạng sóng như sau :

• Ở đầu quá trình chuyển đổi dữ liệu, tín hiệu “RESET” tác động để thiết lập giá trị ban đầu cho các tín hiệu điều khiển và các tín hiệu nhận dữ liệu từ

“DIN”

• Tại 110ns, tín hiệu “START”=1 báo hiệu quá trình nhận dữ liệu bắt đầu

“CSAM” bắt đầu tăng

• Khi “CSAM”=8 thì dữ liệu vào “DIN” được lưu giữ trong thanh ghi “DI”

• Khi “CSAM”=15 thì bắt đầu tăng giá trị của CBIT

Trang 32

• Khi “CSAM”=15 thì “CBIT” tăng một đơn vị và “CSAM” được trả về 0.

• Ta xét “CSAM” từ 18 Lúc này, mỗi bit dữ liệu “DIN” được đưa từ từ vào thanh ghi “SR” Đến khi “CBIT”=9 thì chuỗi 8-bit dữ liệu ngõ vào nối tiếp được đưa vào thanh ghi “SR”

• Việc này được thực hiện bằng cách dịch phải dữ liệu “DIN” vào thanh ghi

bị quá trình nhận dữ liệu tiếp theo

• Đến thời điểm này đã kết thúc việc chuyển 8-bit dữ liệu ngõ vào nối tiếp thành 8-bit dữ liệu ngõ ra song song

• Tiếp tục chờ tín hiệu “ENA” để thực hiện tiếp việc nhận dữ liệu từ “DIN” Trong mô phỏng trên giả sử tín hiệu “ENA” luôn tích cực Nhận dữ liệu liên tục

3.18 A BLACKJACK MODEL

module Blackjack (CardValue, Clock, InsertCard,

NewGame, TotalPoints, Won, Lost);

input [3:0] CardValue;

input Clock , InsertCard, NewGame;

output [5:0] TotalPoints;

output Won , Lost;

reg Won , Lost;

Ngày đăng: 29/06/2021, 07:37

TỪ KHÓA LIÊN QUAN

w