0.5 đ Giống nhau: cả 2 lệnh đều xét điều khiển Boolean và có cùng thứ tự ưu tiên từ trên xuống.. Nếu chỉ gán dữ liệu cho 1 tín hiệu ra thì 2 lệnh như nhau: Khác nhau: Nếu nhiều lệnh gán
Trang 1Số hiệu: BM1/QT-K.ĐĐT-RĐTV/00 Ngày hiệu lực: 22/09/2008 Trang: 1/1
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT ĐỀ THI MÔN: KT PLD-ASIC
- Thời gian: 75 phút, không được sử dụng tài liệu
-
Câu 1: Hãy cho biết trạng thái của loại dữ liệu std_logic và giải thích câu lệnh theo sau (0.5 đ)
y <= (7|5=> ‘1’, 6|4|3|2|1|0 => ‘0’);
Có 8 hoặc 9 loại dữ liệu như sau: ('U', 'X', 'O', 'l', 'Z', 'W', 'L', 'H', '-')
Bit thứ 7 và thứ 5 gán giá trị 1, các bit còn lại gán giá trị 0
Câu 2: Hãy so sánh 2 lệnh: gán tín hiệu có điều kiện và lệnh if (0.5 đ)
Giống nhau: cả 2 lệnh đều xét điều khiển Boolean và có cùng thứ tự ưu tiên từ trên xuống
Nếu chỉ gán dữ liệu cho 1 tín hiệu ra thì 2 lệnh như nhau:
Khác nhau: Nếu nhiều lệnh gán cho nhiều tín hiệu thì chỉ có lệnh if mới đáp ứng được còn nếu dùng lệnh
gán tín hiệu có điều kiện thì phải dùng nhiều lệnh
Lệnh if là lệnh tuần tự nằm bên trong process - lệnh gán có điều kiện là lệnh đồng thời
Câu 3: Hãy thiết kế mạch giải mã led 7 đoạn anode chung (2.5 đ)
a Hãy vẽ sơ đồ khối kết nối FPGA với led 7 đoạn
I0
FPGA a b c d e f g
Vcc
I1 I2 I2
b Hãy lập bảng trạng thái giải mã cho 10 số từ 0 đến 9
0 0 0 0 0 1 0 0 0 0 0 0
1 0 0 0 1 1 1 1 1 0 0 1
2 0 0 1 0 0 1 0 0 1 0 0
3 0 0 1 1 0 1 1 0 0 0 0
4 0 1 0 0 0 0 1 1 0 0 1
5 0 1 0 1 0 0 1 0 0 1 0
6 0 1 1 0 0 0 0 0 0 1 0
7 0 1 1 1 1 1 1 1 0 0 0
8 1 0 0 0 0 0 0 0 0 0 0
9 1 0 0 1 0 0 1 0 0 0 0
Chú ý là led anode chung, có làm led cathode chung thì điểm 0
c Hãy viết chương trình VHDL để giải mã 10 số dùng lệnh gán tín hiệu có lựa chọn
Trang 2Số hiệu: BM1/QT-K.ĐĐT-RĐTV/00 Ngày hiệu lực: 22/09/2008 Trang: 2/1
entity GIAIMA_7DOAN is
Port ( I : in STD_LOGIC_VECTOR (3 downto 0);
SSEG : out STD_LOGIC_VECTOR (6 downto 0));
end GIAIMA_7DOAN;
architecture Behavioral of GIAIMA_7DOAN is
begin
WITH I SELECT
SSEG <= "1000000" WHEN X"0",
end Behavioral;
Chú ý: không dùng dấu chấm thập phân, khi số ngõ vào lớn hơn 9 thì led tắt
Câu 4: Hãy viết chương trình dịch trái logic (logic shift) hoặc dịch trái số học (arithmetic shift) được lựa chọn
bởi tín hiệu ctrl 1 bit (ctrl bằng 0 thì thực hiện logic shift, bằng 1 thì thực hiện arithmetic shift), dữ liệu ngõ vào để dịch là y 8 bit, tín hiệu amt 3 bit sẽ lựa chọn số bit cần dịch Sử dụng lệnh tuỳ chọn.(2 đ)
entity LOGIC_ARITHMETIC_SHIFT is
Port ( X : in STD_LOGIC_VECTOR (7 downto 0);
AMT : in STD_LOGIC_VECTOR (2 downto 0);
CTRL : in STD_LOGIC;
Y : out STD_LOGIC_VECTOR (7 downto 0));
end LOGIC_ARITHMETIC_SHIFT;
architecture Behavioral of LOGIC_ARITHMETIC_SHIFT is
SIGNAL SIN: STD_LOGIC_VECTOR(7 DOWNTO 0);
begin
WITH CTRL SELECT
SIN <= (OTHERS => '0') WHEN '0',
WITH AMT SELECT
X(5 DOWNTO 0) & SIN(7 DOWNTO 6) WHEN "010",
X(4 DOWNTO 0) & SIN(7 DOWNTO 5) WHEN "011",
X(3 DOWNTO 0) & SIN(7 DOWNTO 4) WHEN "100",
X(2 DOWNTO 0) & SIN(7 DOWNTO 3) WHEN "101",
X(1 DOWNTO 0) & SIN(7 DOWNTO 2) WHEN "110",
Trang 3Số hiệu: BM1/QT-K.ĐĐT-RĐTV/00 Ngày hiệu lực: 22/09/2008 Trang: 3/1
end Behavioral;
CHÚ Ý BÀI NÀY CÁC BẠN LÀM SAI CHIỀU BÀI THI THÌ DỊCH TRÁI, TRONG TÀI LIỆU HỌC LÀ
DỊCH PHẢI, RẤT ÍT BẠN LÀM ĐÚNG CHIỀU LÀM SAI CHIỀU BỊ ĐIỂM 0
Câu 5: (2.5 đ)
a Hãy lập trình mạch xor giảm (Reduced-xor) 16 bit (có 16 ngõ vào, 1 ngõ ra) theo dạng nối tiếp và vẽ
sơ đồ mạch tương ứng
b Hãy lập trình lại mạch ở câu a theo dạng cây và vẽ sơ đồ mạch tương ứng
c So sánh thời gian trễ và tài nguyên sử dụng của 2 mạch
BÀI NÀY GIỐNG TRONG SÁCH, CHỈ MỞ RỘNG THÊM SỐ CỔNG LÀ 16
LẬP TRÌNH DÙNG HÀM XOR
RẤT NHIỀU BẠN DÙNG KÝ HIỆU (+) SẼ KHÔNG ĐƯỢC ĐIỂM
CÓ RẤT NHIỀU BẠN KHAI BÁO 16 TÍN HIỆU VÀO, MỖI TÍN HIỆU VÀO TỚI 16 BIT (KIỂU VECTOR) NÊN CŨNG KHÔNG CÓ ĐIỂM
16 NGÕ VÀO THÌ CHỈ DÙNG 15 CỔNG – CÓ RẤT NHIỀU BẠN DÙNG TỚI 16 CỔNG
Câu 6: Cho đoạn code theo sau, các tín hiệu a, b, c, d đều 32 bit, các tín hiệu x, y là 16 bit (2 đ)
Process(x,y,a,b,c,d,…)
Begin
elsif x<y then r <= a + c;
end if;
end process;
a Hãy vẽ sơ đồ khái niệm của code trên
T
F
R T
F
A+B
A+C
D+1
A
B
C
1
X<Y
X>Y D
b Hãy cho biết các toán tử sử dụng trong mạch và tài nguyên sử dụng là bao nhiêu?
Các toán tử sử dụng là 2 mạch cộng dữ liệu 32 bit, 1 mạch cộng 1 đơn vị 32 bit
Trang 4Số hiệu: BM1/QT-K.ĐĐT-RĐTV/00 Ngày hiệu lực: 22/09/2008 Trang: 4/1
Hai toán tử so sánh lớn hơn và nhỏ hơn 16 bit (toán tử bằng chính là trường hợp sai còn lại)
Hai mạch đa hợp – cái này không phải là toán tử - bạn có thể tính hoặc không tính cũng được
Tài nguyên sử dụng tính theo tối ưu tài nguyên = 203 * 2 (add) + 153 (incrementor) + 52*2(so sánh) + 85*2 (mux) = 833
Bạn tính theo thông số tối ưu về thời gian vẫn được điểm
c Hãy dùng kỹ thuật chia sẻ toán tử, chia sẻ chức năng nếu được để cải tiến lại đoạn code trên và tính toán lại tài nguyên sau khi cải tiến
Có nhiều cách viết và đây là 1 cách đơn giản:
Signal sa, sb: sdt_logic_vector(31 downto 0);
Process(x,y,a,b,c,d,…)
Begin
If x>y then sa <= a; sb <= b;
elsif x<y then sa <= a; sb <= c;
end if;
r <= sa + sb;
end process;
Yêu cầu đề bài là chỉ lập trình lại rồi tính toán lại tài nguyên chứ không vẽ, bạn vẽ mà vẽ không lập trình lại thì không được điểm vì sai yêu cầu
Sau khi cải tiến thì mạch chỉ còn dùng 1 toán tử cộng như xuất hiện thêm 2 mạch đa hợp
Tài nguyên sử dụng tính theo tối ưu tài nguyên = 203 + 52*2(so sánh) + 85*4 (mux) = 647
NHIỀU BẠN LÀM SAI:
1 ĐIỀU KIỆN ƯU TIÊN
2 MẠCH ĐA HỢP NHIỀU KÊNH CỦA CÂU LỆNH LỰA CHỌN
3 TÍNH TOÁN TÀI NGUYÊN SAI SỐ BIT
Chú ý: bảng thông số tài nguyên sử dụng và thời gian trễ cho ở trang 2
Trang 5Số hiệu: BM1/QT-K.ĐĐT-RĐTV/00 Ngày hiệu lực: 22/09/2008 Trang: 5/1
-
Cán bộ coi thi không được giải thích đề thi, cho đề thi vào túi bài thi để chấm bài
Tp Hồ Chí Minh, ngày 16 tháng 12 năm 2014
p.Trưởng bộ môn
NGUYỄN ĐÌNH PHÚ
Trang 6Số hiệu: BM1/QT-K.ĐĐT-RĐTV/00 Ngày hiệu lực: 22/09/2008 Trang: 6/1