Download - Fpga practice full
![Page 1: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/1.jpg)
VIETNAM NATIONAL UNIVERSITY, HANOIVIETNAM NATIONAL UNIVERSITY, HANOI
College of TechnologyCollege of Technology
Apr 12, 2023
FPGA Design Course
Part 2: Practice – Working with ModelSim
Nguyen Ngoc Mai
Tran Van Huan
Researchers, SIS Laboratory – Coltech (VNU)
http://www.coltech.vnu.vn/sis
![Page 2: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/2.jpg)
Apr 12, 2023April 12, 2023
2
Topics
1. ModelSim Quick Guide• Introduction• Getting start with Projects
2. Practice:• Lab 1: Design a 2-to-1 Multiplexer
![Page 3: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/3.jpg)
Apr 12, 2023April 12, 2023
3
Goals
• Be familiar with using ModelSim• Be able to program some basic digital circuits by VHDL
![Page 4: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/4.jpg)
Apr 12, 2023April 12, 2023
4
Section 1: ModelSim Quick Guide
1. Introduction2. Getting start with Projects
![Page 5: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/5.jpg)
Apr 12, 2023April 12, 2023
5
Introduction to ModelSim
• (C) Mentor Graphics• A Simulator and Debugger HDL Tool• Support: VHDL, Verilog, SystemC, …• Docs (pdf):
• User’s Guide• Reference Manual
![Page 6: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/6.jpg)
Apr 12, 2023April 12, 2023
6
Getting start with ModelSim Projects
![Page 7: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/7.jpg)
Apr 12, 2023
1 – Creating a new project
Launch ModelSim Create new folder for each project
Command: mkdir <folder_name> Example: mkdir counter_demo
Select File > New > Project Enter Project Name OK
April 12, 2023
7
![Page 8: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/8.jpg)
Apr 12, 2023
2 – Adding Items to the project
Example: Add counter.vhd file to the project
April 12, 2023
8
![Page 9: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/9.jpg)
Apr 12, 2023
3 – Compiling the project
GUI: Select Compile > Compile All or
April 12, 2023
9
![Page 10: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/10.jpg)
Apr 12, 2023
4 – Simulating the design
GUI: Select Simulate > Start Simulation… or Double-click on Library.work.counter.only or Command: vsim counter.vhd
April 12, 2023
10
![Page 11: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/11.jpg)
Apr 12, 2023
4 – Simulating the design (cnt.)
Add All signals to wave: GUI: Right-click on Objects window > Add to wave >
Signals in Design Command: add wave –r /*
Create wave for a signal
Modify/Edit Waveform
Run Simulation
April 12, 2023
11
![Page 12: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/12.jpg)
Apr 12, 2023
5 – Analyzing Waveforms
Add cursor
April 12, 2023
12
![Page 13: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/13.jpg)
Apr 12, 2023
Section 2: Practice
A 8-bit wide 2-to-1 Multiplexer
See Laboratory Exercise 1.doc
April 12, 2023
13
![Page 14: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/14.jpg)
Apr 12, 2023Apr 12, 2023
14
Các bước thiết kế
Tổng kết
Hợp kênh 8-bit 2 lối vào dữ liệu
Hợp kênh 3-bit 5 lối vào dữ liệu
Bộ cộng Ripple-Carry Adder
![Page 15: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/15.jpg)
Apr 12, 2023Apr 12, 2023
15
Các bước thiết kế
Thiết kế mạch tổ hợp:
- Bảng trị các lối vào-ra (bảng chân lý)
- Lập phương trình logic
- Rút gọn phương trình (pp đại số, Karnaugh …)
- Mô tả mạch (hình vẽ, ngôn ngữ HDL …)
Ví dụ: các mạch mã hóa, giải mã, hợp kênh, phân kênh, bộ cộng, bộ so sánh …
Thiết kế mạch dãy:
- Xây dựng đồ hình trạng thái
- Tối thiểu hóa trạng thái
- Mô tả mạch (hình vẽ, ngôn ngữ HDL …)
Ví dụ: các mạch đếm, bộ ghi dịch, giám sát dữ liệu nối tiếp, các mạch điều khiển dạng máy trạng thái hữu hạn …
(mạch đếm & mạch nhớ là các mạch dãy đơn giản)
Thiết kế hệ thống số:
- Xác định các lối vào-ra
- Mô tả trực tiếp hoạt động của hệ thống
- Phân chia hệ thống thành các mạch số đơn giản
- 2 loại mạch số: mạch tổ hợp và mạch dãy
![Page 16: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/16.jpg)
Apr 12, 2023Apr 12, 2023
16
Các bước thiết kế
Tổng kết
Hợp kênh 8-bit 2 lối vào dữ liệu
Hợp kênh 3-bit 5 lối vào dữ liệu
Bộ cộng Ripple-Carry Adder
![Page 17: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/17.jpg)
Apr 12, 2023Apr 12, 2023
17
LabEx1 Part1
m <= (NOT (s) AND x) OR (s AND y);
![Page 18: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/18.jpg)
Apr 12, 2023Apr 12, 2023
18
1. library ieee;
2. use ieee.std_logic_1164.all;
3. entity mux8bit2to1 is
4. port(
5. < … >
6. );
7. end mux8bit2to1;
8. architecture behavior of mux8bit2to1 is
9. begin
10. < … >
11. end behavior;
LabEx1 Part1
![Page 19: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/19.jpg)
Apr 12, 2023Apr 12, 2023
19
LabEx1 Part1
1. architecture behavior of mux8bit2to1 is
2. begin
3. < … >
4. end behavior;
![Page 20: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/20.jpg)
Apr 12, 2023Apr 12, 2023
20
LabEx1 Part1
1. library ieee;2. use ieee.std_logic_1164.all;
3. entity mux8bit2to1 is4. port(5. X,Y : in std_logic_vector(7 downto 0);6. s : in std_logic;7. M : out std_logic_vector(7 downto 0)8. );9. end mux8bit2to1;
10. architecture behavior of mux8bit2to1 is11. begin12. M(7) <= (NOT (s) AND X(7)) OR (s AND Y(7));13. M(6) <= (NOT (s) AND X(6)) OR (s AND Y(6));14. M(5) <= (NOT (s) AND X(5)) OR (s AND Y(5));15. M(4) <= (NOT (s) AND X(4)) OR (s AND Y(4));16. M(3) <= (NOT (s) AND X(3)) OR (s AND Y(3));17. M(2) <= (NOT (s) AND X(2)) OR (s AND Y(2));18. M(1) <= (NOT (s) AND X(1)) OR (s AND Y(1));19. M(0) <= (NOT (s) AND X(0)) OR (s AND Y(0));20. end behavior;
![Page 21: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/21.jpg)
Apr 12, 2023Apr 12, 2023
21
Các bước thiết kế
Tổng kết
Hợp kênh 8-bit 2 lối vào dữ liệu
Hợp kênh 3-bit 5 lối vào dữ liệu
Bộ cộng Ripple-Carry Adder
![Page 22: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/22.jpg)
Apr 12, 2023Apr 12, 2023
22
![Page 23: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/23.jpg)
Apr 12, 2023Apr 12, 2023
23
LabEx1 Part2
![Page 24: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/24.jpg)
Apr 12, 2023Apr 12, 2023
24
LabEx1 Part2
1. library ieee;2. use ieee.std_logic_1164.all;
3. entity mux1bit5to1 is4. port(5. u,v,w,x,y : in std_logic;6. s2,s1,s0 : in std_logic;7. m : out std_logic8. );9. end mux1bit5to1;
10. architecture behavior of mux1bit5to1 is11. signal m2,m1,m0: std_logic;12. begin13. m2 <= (NOT (s0) AND u) OR (s0 AND v);14. m1 <= (NOT (s0) AND w) OR (s0 AND x);15. m0 <= (NOT (s1) AND m2) OR (s1 AND
m1);16. m <= (NOT (s2) AND m0) OR (s2 AND y);17. end behavior;
m2
m1
m0
![Page 25: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/25.jpg)
Apr 12, 2023Apr 12, 2023
25
LabEx1 Part2
000001010011100
000001010011100
000001010011100
M(2)
M(1)
M(0)
U(2)V(2)W(2)
Y(2)X(2)
U(1)V(1)W(1)
Y(1)X(1)
U(0)V(0)W(0)
Y(0)X(0)
s0 s1 s2
![Page 26: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/26.jpg)
Apr 12, 2023Apr 12, 2023
26
LabEx1 Part2
1. library ieee;2. use ieee.std_logic_1164.all;
3. entity mux3bit5to1 is4. port(5. U,V,W,X,Y : in std_logic_vector(2 downto 0);6. s2,s1,s0 : in std_logic;7. M : out std_logic_vector(2 downto 0)8. );9. end mux3bit5to1;
10. architecture structure of mux3bit5to1 is11. component mux1bit5to112. port(13. u,v,w,x,y : in std_logic;14. s2,s1,s0 : in std_logic;15. m : out std_logic16. );17. end component;18. begin19. mux_2: mux1bit5to1 port map (U(2),V(2),W(2),X(2),Y(2),s2,s1,s0,M(2));20. mux_1: mux1bit5to1 port map (U(1),V(1),W(1),X(1),Y(1),s2,s1,s0,M(1));21. mux_0: mux1bit5to1 port map (U(0),V(0),W(0),X(0),Y(0),s2,s1,s0,M(0));22. end structure;
![Page 27: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/27.jpg)
Apr 12, 2023Apr 12, 2023
27
Các bước thiết kế
Tổng kết
Hợp kênh 8-bit 2 lối vào dữ liệu
Hợp kênh 3-bit 5 lối vào dữ liệu
Bộ cộng Ripple-Carry Adder
![Page 28: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/28.jpg)
Apr 12, 2023Apr 12, 2023
28
LabEx2 Part1
![Page 29: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/29.jpg)
Apr 12, 2023Apr 12, 2023
29
LabEx2 Part1
1. library ieee;2. use ieee.std_logic_1164.all;
3. entity full_adder is4. port(5. a,b,ci : in std_logic;6. co,s : out std_logic7. );8. end full_adder;
9. architecture behavior of full_adder is10. signal ab : std_logic;11. begin12. ab <= a xor b;13. s <= ab xor ci;14. co <= (NOT (ab) AND b) OR (ab AND
ci);15. end behavior;
![Page 30: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/30.jpg)
Apr 12, 2023Apr 12, 2023
30
LabEx2 Part1
1. library ieee;2. use ieee.std_logic_1164.all;
3. entity RCA_4bit is4. port(5. A,B : in std_logic_vector(3 downto 0);6. cin : in std_logic;7. cout : out std_logic;8. S : out std_logic_vector(3 downto 0)9. );10. end RCA_4bit;
11. architecture structure of RCA_4bit is12. signal c3,c2,c1 : std_logic;13. component full_adder14. port(15. a,b,ci : in std_logic;16. co,s : out std_logic17. );18. end component;19. Begin -- <….>
![Page 31: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/31.jpg)
Apr 12, 2023Apr 12, 2023
31
LabEx2 Part1
19. begin20. FA_0: full_adder port map( a => A(0),21. b => B(0),22. ci => cin,23. co => c1,24. s => S(0)25. );26. FA_1: full_adder port map ( a => A(1),27. b => B(1),28. ci => c1,29. co => c2,30. s => S(1)31. );32. FA_2: full_adder port map ( a => A(2),33. b => B(2),34. ci => c2,35. co => c3,36. s => S(2)37. );38. FA_3: full_adder port map ( a => A(3),39. b => B(3),40. ci => c3,41. co => cout,42. s => S(3)43. );44. end structure;
![Page 32: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/32.jpg)
Apr 12, 2023Apr 12, 2023
32
LabEx2 Part2
FA
S(1)
c(1)a(1)b(1)
FA
S(0)
C_ina(0)b(0)
FA
S(n-1)
c(n-1)a(n-1)b(n-1)
C_out
FA
S(2)
c(2)a(2)b(2)
. . .
Bộ cộng n bit (n-bit ripple carry adder circuit)
![Page 33: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/33.jpg)
Apr 12, 2023Apr 12, 2023
33
LabEx2 Part2
1. library ieee;2. use ieee.std_logic_1164.all;
3. entity RCA_Nbit is4. generic( N : integer := 4 );5. port( A,B : in std_logic_vector(N-1 downto 0);6. cin : in std_logic;7. cout : out std_logic;8. S : out std_logic_vector(N-1 downto 0) );9. end RCA_Nbit;
10. architecture structure of RCA_Nbit is11. signal C : std_logic_vector(N downto 0);12. component full_adder13. port( a,b,ci : in std_logic;14. co,s : out std_logic );15. end component;16. begin17. C(0) <= cin;18. RCAdder: for i in 0 to N-1 generate19. FA: full_adder port map (A(i),B(i),C(i),C(i+1),S(i));20. end generate;21. cout <= C(N);22. end structure;
![Page 34: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/34.jpg)
Apr 12, 2023Apr 12, 2023
34
LabEx2 Part2
1. entity RCA_8bit is2. port( A,B : in std_logic_vector(7 downto 0);3. cin : in std_logic;4. cout : out std_logic;5. S : out std_logic_vector(7 downto 0) );6. end RCA_8bit;
7. architecture structure of RCA_8bit is8. component RCA_Nbit9. generic( N : integer := 4 );10. port( A,B : in std_logic_vector(N-1 downto 0);11. cin : in std_logic;12. cout : out std_logic;13. S : out std_logic_vector(N-1 downto 0) );14. end component;15. begin16. adder: RCA_Nbit generic map (N => 8)17. port map( A => A,18. B => B,19. cin => cin,20. cout => cout,21. S => S );22. end structure;
![Page 35: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/35.jpg)
Apr 12, 2023Apr 12, 2023
35
Các bước thiết kế
Tổng kết
Hợp kênh 8-bit 2 lối vào dữ liệu
Hợp kênh 3-bit 5 lối vào dữ liệu
Bộ cộng Ripple-Carry Adder
![Page 36: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/36.jpg)
Apr 12, 2023Apr 12, 2023
36
Công cụ phần mềm (ModelSim): tạo project, viết file mô tả VHDL, biên dịch, mô phỏng
Ngôn ngữ VHDL:
- cấu trúc một file VHDL
- Có khái niệm về entity, port, signal, component, generic…
- Cú pháp khai báo và sử dụng các đối tượng trên
- Cú pháp vòng for … generate Thiết kế các mạch số: một vài mạch TỔ HỢP đơn giản (hợp
kênh và bộ cộng)
![Page 37: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/37.jpg)
Apr 12, 2023
Buổi thực hành 2
Thiết kế một số phần tử nhớ, bộ đếm Mô phỏng trên ModelSim Thực thi các mạch tổ hợp và mạch dãy đã thiết kế trên FPGA
EP2C35F672C6 của hãng Altera
37
![Page 38: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/38.jpg)
Apr 12, 2023
Thực thi các mạch trên FPGA
Sử dụng phần mềm Quartus của hãng Altera
Tạo project Add các file nguồn VHDL Gán các port của entity top-level với các chân
của FPGA Biên dịch-Tổng hợp Nạp chương trình lên chip
38
![Page 39: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/39.jpg)
Apr 12, 2023
LabEx0 Part1
Mạch giải mã 7 đoạn: với đầu vào là tín hiệu biểu diễn số nhị phân 4 bit, đầu ra là các mã hiển thị LED 7 đoạn với Anode chung.
Thực hiện nạp lên FPGA trên kit DE2 sao cho LED7 đoạn HEX0 hiển thị giá trị số nhị phân được cho bới các công tắc SW3, SW2, SW1, SW0.
D(0)
D(6)
D(3)
D(5)
D(4)
D(1)
D(2)
Decoder4 7
BN
(binary number)
D
(Display code)
39
![Page 40: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/40.jpg)
Apr 12, 2023
Bảng chân lý:BN3 BN2 BN1 BN0 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 1 0 0 0 0 0 0
0 0 0 1 1 1 1 1 0 0 1
0 0 1 0 0 1 0 0 1 0 0
0 0 1 1 0 1 1 0 0 0 0
0 1 0 0 0 0 1 1 0 0 1
0 1 0 1 0 0 1 0 0 1 0
0 1 1 0 0 0 0 0 0 1 0
0 1 1 1 1 1 1 1 0 0 0
1 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 1 0 0 0 0
1 0 1 0 0 0 0 1 0 0 0
1 0 1 1 0 0 0 0 0 1 1
1 1 0 0 1 0 0 0 1 1 0
1 1 0 1 0 1 0 0 0 0 1
1 1 1 0 0 0 0 0 1 1 0
1 1 1 1 0 0 0 1 1 1 0
40
![Page 41: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/41.jpg)
Apr 12, 2023
LabEx0 Part1
Có thể viết 7 phương trình logic để mô tả mạch giải mã trênhoặc viết đoạn code sau:
1. architecture simple of LED7seg_decoder is
2. begin3. process(BN)4. begin5. case BN is6. when "0000" => D <="1000000";7. when "0001" => D <="1111001";8. when "0010" => D <="0100100";9. when "0011" => D <="0110000";10. when "0100" => D <="0011001";11. when "0101“ => D <="0010010";12. when "0110" => D <="0000010";13. when "0111" => D <="1111000";14. when "1000" => D <="0000000";15. when "1001" => D <="0010000";16. when "1010“ => D <="0001000";17. when "1011“ => D <="0000011";18. when "1100“ => D <="1000110";19. when "1101“ => D <="0100001";20. when "1110“ => D <="0000110";21. when "1111“ => D <="0001110";22. when others => D <="1111111";23. end case;24. end process;25. end simple;
41
Combinational process:<optional_label>:process(<sensitivity_list>)-- Declaration(s)begin-- Sequential Statement(s)end process;
Sensitivity list: danh sách các tín hiệu màsự thay đổi của chúng có ảnh hưởngtới mạch (gây ra thay đổi trên lối ra)Declaration: khai báo các tín hiệu vàbiến dùng trong processSequential statement: các câu lệnh tuần tựnhư if, case, for … loop, …
![Page 42: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/42.jpg)
Apr 12, 2023
LabEx0 Part1
Tạo project
(chú ý: tên project, tên file top-level.vhd, tên entity top-level phải giống nhau)
File>New project wizard…
Chọn thư mục và đặt tên project
Đường dẫntới thư mụcchứa project
Tên project
42
![Page 43: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/43.jpg)
Apr 12, 2023
LabEx0 Part1
Nếu đã có file nguồn VHDL, có thể add vào project:
43
![Page 44: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/44.jpg)
Apr 12, 2023
LabEx0 Part1
Lựa chọn Family CycloneII và tên FPGA là EP2C35F672C6
44
![Page 45: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/45.jpg)
Apr 12, 2023
LabEx0 Part1
File>New để tạo file VHDL mới Hoặc Project>Add/Remove Files In Project… để add các file
VHDL vào project Processing>Start Complitation để biên dịch Trên kit DE2, các chân của FPGA được kết nối với các phần cứng
(như công tắc SW, KEY, các LED …)(xem file DE2_UserManual.pdf)Để mạch số được thiết kế có thể hoạt động trên kit DE2, ta cần thực hiện gán các đầu vào và đầu ra của mạch với các chân tương ứng của FPGA.Trong bài này cần gán các port BN của entity với các công tắc SW3, SW2, SW1, SW0 và các lối ra D được gán với LED 7 đoạn HEX0.Assignments > Assignment Editor để thực hiện gán chân
Tại cửa sổ Assignment Editor, chọn Category là Pin (xem hình slide sau)
45
![Page 46: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/46.jpg)
Apr 12, 2023
LabEx0 Part1
Double Click vào <<new>> ở cột To để lựa chọn port cần gán sau đó lựa chọn chân tương ứng của FPGA ở cột Location bên cạnh(xem file DE2_UserManual.pdf)
46
![Page 47: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/47.jpg)
Apr 12, 2023
LabEx0 Part1
Save file Assignment Editor như sau:
Biên dịch & tổng hợp lại với file gán chân
47
![Page 48: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/48.jpg)
Apr 12, 2023
LabEx0 Part1
Tools>Programmer để nạp vào FPGA: đánh dấu vào program/configure rồi chọn Start
48
![Page 49: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/49.jpg)
Apr 12, 2023
LabEx3 part1
Yêu cầu thiết kế 3 phần tử nhớ:a. Chốt Db. Flipflop hoạt động
theo sườn lênc. Flipflop hoạt động
theo sườn xuốngQa có giá trị = D khi Clk=1Khi Clk=0, Qa nhớ trạng thái
trước đóQb chỉ nhận giá trị của D tại
thời điểm có sườn lêncủa Clk, sau đó giá trị nàyđược nhớ tới khi có sườn lêntiếp theo trên Clk
Qc tương tự với Qb nhưnghoạt động theo sườn xuốngcủa Clk
49
![Page 50: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/50.jpg)
Apr 12, 2023
LabEx3 part1
1. library ieee;2. use ieee.std_logic_1164.all;
3. entity latch is4. port(5. D,Clk : in std_logic;6. Q,notQ : out std_logic7. );8. end latch;
9. architecture behavior of latch is10. begin11. process (D,Clk)12. begin13. if Clk ='1' then14. Q <= D;15. notQ <= not D;16. end if;17. end process;18. end behavior;
50
![Page 51: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/51.jpg)
Apr 12, 2023
LabEx3 part1
1. library ieee;2. use ieee.std_logic_1164.all;
3. entity PE_FlipFlop is4. port(5. D,Clk : in std_logic;6. Q,notQ : out std_logic7. );8. end PE_FlipFlop;
9. architecture behavior of PE_FlipFlop is10. begin11. process (Clk)12. begin13. if Clk'event and Clk ='1' then
-- if rising_edge(Clk) then14. Q <= D;15. notQ <= not D;16. end if;17. end process;18. end behavior;
51
Sequential process:<optional_label>:process(reset, clk)-- Declaration(s)beginif(reset = '1') then-- Asynchronous Sequential Statement(s)elsif(rising_edge(clk)) then-- Synchronous Sequential Statement(s)end if;end process;
- Asynchronous Sequential Statement:các lệnh tuần tự hoạt động không theo clock(không đồng bộ/dị bộ)- Synchronous Sequential Statement:các lệnh tuần tự hoạt động theo clock(đồng bộ)
![Page 52: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/52.jpg)
Apr 12, 2023
LabEx3 part1
1. library ieee;2. use ieee.std_logic_1164.all;
3. entity NE_FlipFlop is4. port(5. D,Clk : in std_logic;6. Q,notQ : out std_logic7. );8. end NE_FlipFlop;
9. architecture behavior of NE_FlipFlop is10. begin11. process (Clk)12. begin13. if Clk'event and Clk ='0' then-- if falling_edge(Clk) then14. Q <= D;15. notQ <= not D;16. end if;17. end process;18. end behavior;
52
![Page 53: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/53.jpg)
Apr 12, 2023
LabEx3 part2
Thiết kế bộ đếm 16 bit có cấu trúc tương tự bộ đếm 4 bit dưới đây (gồm các flip-flop kiểu T):
Các flip-flop kiểu T có dạng:sau mỗi xung clock,nếu en ở mức tích cực,clr không tích cựcgiá trị lối ra Q sẽ bị đảoso với trước
53
D-typeflip-flop
D Q
notQ
en
clrclk
![Page 54: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/54.jpg)
Apr 12, 2023
LabEx3 part2
1. library ieee;2. use ieee.std_logic_1164.all;
3. entity D_FlipFlop is4. port(5. D,Clk,En,Rst : in std_logic;6. Q,notQ : out std_logic7. );8. end D_FlipFlop;
9. architecture behavior of D_FlipFlop is10. begin11. process (Clk)12. begin13. if Clk'event and Clk ='1' then -- if rising_edge(Clk) then14. if Rst = '0' then15. Q <= '0';16. notQ <= '1';17. elsif En = '1' then18. Q <= D;19. notQ <= not D;20. end if;21. end if;22. end process;23. end behavior;
54
![Page 55: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/55.jpg)
Apr 12, 2023
LabEx3 part2
1. library ieee;2. use ieee.std_logic_1164.all;
3. entity T_FlipFlop is4. port(5. Clk,T,Rst : in std_logic;6. Q : out std_logic7. );8. end T_FlipFlop;
9. architecture structure of T_FlipFlop is10. component D_FlipFlop11. port(12. D,Clk,En,Rst : in std_logic;13. Q,notQ : out std_logic14. );15. end component;16. signal notQ : std_logic;17. begin18. comp1: D_Flipflop port map (D => notQ, Clk => Clk, En => T, Rst => Rst,
Q => Q, notQ => notQ);19. end structure;
55
![Page 56: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/56.jpg)
Apr 12, 2023
LabEx3 part2
1. library ieee;2. use ieee.std_logic_1164.all;3. entity Cntr_16bit is4. port( Clock,Enable,Clear : in std_logic;5. Count : out std_logic_vector(15 downto 0));6. end Cntr_16bit;7. architecture structure of Cntr_16bit is8. component T_FlipFlop9. port( Clk,T,Rst : in std_logic;10. Q : out std_logic );11. end component;12. signal En,Q : std_logic_vector(15 downto 0);13. Begin14. En(0) <= Enable;15. comp0: T_Flipflop port map (Clk => Clock, T => En(0), Rst => Clear, Q => Q(0));16. Count(0) <= Q(0);17. generate_label: for i in 1 to 15 generate18. En(i) <= En(i-1) and Q(i-1);19. comp: T_Flipflop port map (Clk => Clock, T => En(i), Rst => Clear, Q => Q(i));20. Count(i) <= Q(i);21. end generate;22. end structure;
56
![Page 57: Fpga practice full](https://reader035.vdocuments.site/reader035/viewer/2022081418/5561af7fd8b42ae1538b5728/html5/thumbnails/57.jpg)
Apr 12, 2023
LabEx0 Part2
Với các bước tương tự trên, Part2 yêu cầu thiết kế một mạch số thực hiện đếm số lần ấn công tắc KEY0 trên kit DE2 và hiển thị kết quả đếm được bằng số nhị phân 16 bit trên 4 LED 7 đoạn HEX3, HEX2, HEX1, HEX0.
Việc đếm này chỉ được thực hiện khi công tắc SW0 và SW1 được đặt bằng 1. Nếu SW0=‘0’, bộ đếm bị xóa. Nếu SW1=‘0’ thì không đếm
57