You are currently viewing VHDL vs. Verilog: Hệ thống an toàn số

VHDL vs. Verilog: Hệ thống an toàn số

      Học thiết kế mạch bằng cả ngôn ngữ VHDL và Verilog thông qua ví dụ thiết kế một hệ thống an toàn số. 

     Chúng ta có thể thiết kế một hệ thống an toàn số đơn giản bằng cách sử dụng các mạch tổ hợp. Giả sử rằng hệ thống có mật khẩu được xác định trước gồm bốn bit. Chúng ta sẽ sử dụng bốn thiết bị chuyển mạch làm đầu vào cho hệ thống. Nếu đầu vào khớp với mật khẩu được đặt trước, thì đầu ra đầu tiên sẽ có mức logic 1. Nếu không, đầu ra thứ hai sẽ có mức logic 1.

Chúng ta có thể thực hiện mạch tổ hợp tương ứng bằng cách sử dụng cổng XOR và theo sau là cổng NOT cho mỗi bit được kiểm tra. Do đó, nếu bit đầu vào khớp với bit mật khẩu tương ứng, thì cổng XOR theo sau NOT sẽ cho mức logic 1. Các lối ra của cổng XOR theo sau NOT được đưa tới một bộ AND bốn lối vào để tạo ra đầu ra thứ nhất. Như vậy, nếu tất cả các bit đầu vào khớp với các bit mật khẩu được xác định trước theo cách này, đầu ra đầu tiên sẽ có mức logic 1 và đầu ra thứ hai sẽ có mức logic 0. Đầu ra thứ hai đơn giản sẽ là nghịch đảo của đầu ra thứ nhất.

Để thực hiện mạch tổ hợp cho thiết kế, chúng ta gán các biến nhị phân s0, s1, s2 và s3 làm đầu vào. Mật khẩu được xác định trước có thể được biểu diễn dưới dạng hằng số p [0],…, p [3]. Định nghĩa đầu ra thứ nhất và thứ hai là các biến nhị phân l0 và l1 tương ứng. Sơ đồ mạch tương ứng sẽ như trong Hình 5‑2.

Bảng 5‑3 và Bảng 5‑4 miêu tả cho cùng mạch trong Hình 5‑2 lần lượt bằng Verilog và VHDL.

Safe system

Hình 5‑2. Sơ đồ mạch hệ thống an toàn số.

Bảng 5‑3. Miêu tả bằng Verilog cho mạch hệ thống an toàn số

1

2

3

4

5

6

7

module safe_System (l,s);

input [3:0] s;

output [1:0] l;

parameter p = 4’b0101;

assign l[0] = ~(s[0]^p[0]) & ~(s[1]^p[1]) & ~(s[2]^p[2]) & ~(s[3]^p[3]);

assign l[1] = ~l[0];

endmodule

Bảng 5‑4.  Miêu tả bằng VHDL cho mạch hệ thống an toàn số

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Library ieee;

Use ieee.std_logic_1164.all;

Entity safe_System is

Port (s: in std_logic_vector (3 downto 0);

l: out std_logic_vector(1 downto 0) );

End safe_System;

Architecture dataflow_model of safe_System is

Constant p : std_logic_vector (0 to 3) := “0101”;

Signal t: std_logic;

Begin

t <= not (s(0) xor p(0)) and not (s(1) xor p(1)) and not (s(2) xor p(2)) and not (s(3) xor p(3));

l(0) <= t;

l(1) <= not t;

End dataflow_model;

Nguyễn Kiêm Hùng

Hung K. Nguyen studied “Electronic Engineering” in both his bachelor’s and master’s degrees at the Vietnam National University, Hanoi, Vietnam. He received the bachelor’s degree in 2003. After receiving his bachelor’s degree, He worked as an internship in the Research Center of Electronics and Telecommunications. In 2006, He received the master’s degree in electronic engineering from VNU University of Engineering and Technology (VNU-UET). Before pursuing his Ph.D’s degree, He worked as a researcher at the Laboratory for Smart Integrated Systems in VNU University of Engineering and Technology for two years. In 2008, He went to Southeast University, Nanjing, China to get his Ph.D degree. He received the Ph.D. degree in Microelectronics and Solid State Electronics from Southeast University in 2013. After got his Ph.D’s degree, He returned to VNU University of Engineering and Technology to continue his research in VLSI design. He works currently as an assistant professor and senior researcher at VNU Key Laboratory for Smart Integrated Systems. His research interests mainly include multimedia processing, reconfigurable computing, and SoC designs.

Trả lời