Xây dựng khối quét zigzag

Một phần của tài liệu các thuật toán cơ bản của chuẩn nén ảnh tĩnh JPEG Baseline (Trang 79 - 81)

b. watermarking trong miền nén (trong khi nén)

4.1.5.Xây dựng khối quét zigzag

Như đã trình bày cơ sở lý thuyết của thuật toán quét zigzag trong Mục 3.1.4, chức năng của khối này là chuyển đổi mảng 2 chiều thành mảng 1 chiều theo thứ tự đã được biết trước như Hình 3.7. 64 hệ số DCT trong 1 block sau khi được lượng tử hóa quant_out(11:0) sẽ được quét zigzag theo thứ tự zigzag biết trước (Hình 3.7). Muốn ghi các giá trị vào tuần tự và đọc ra theo thứ tự khác đã biết trước thì nhất thiết phải sử dụng 2 bộ nhớ RAM(64x9) để thực hiện chức năng quét zigzag.

Khối quét zigzag được viết bằng mã VHDL (Hình 4.22a) và được mô tả bằng System generator(Hình 4.22b). zigzag _scan rdy_in qdct _in chro _in chro _out zigzag _out rdy_out (a) (b)

Hình 4.22 : Khối thực hiện quét zigzag

Các chân tín hiệu giao diện của khối : CLK : tín hiệu xung nhịp hệ thống

RST : tín hiệu reset của hệ thống, mức tích cực RST=’1’

Rdy_in : tín hiệu điều khiển thực hiện báo có tín hiệu video tích cực để khối bắt đầu thực hiệ xử lý, mức tích cực rdy_in=’1’.

Chro_in : cho biết tín hiệu đang xử lý là tín hiệu chói Y (chro_in=’0’) hay tín hiệu màu CbCr (chro_in=’1’)

Qdct_in(11:0) : là tín hiệu data đầu vào 12 bits được biểu diễn dưới dạng số module (1 bit dấu và 11 bits giá trị). Khi tín hiệu rdy_in=’1’ thì qdct_in(11:0) mới được xử lý.

Rdy_out : tín hiệu điều khiển báo cho biết đầu ra khối có tín hiệu tích cực. Tín hiệu này trễ so với rdy_in là 64 chu kỳ xung nhịp.

Chro_out : tín hiệu báo cho biết đầu ra khối là tín hiệu chói Y hay tín hiệu màu CrCb. Tín hiệu này trễ so với tín hiệu chro_in là 64 chu kỳ xung nhịp.

Zigziag_out(11:0) : tín hiệu data 12 bits đầu ra được biểu diễn dưới dạng module (1 bit dấu và 11 bits giá trị data).

Nguyên lý hoạt động của khối (Hình 4.23) :

RAM 64x9 RAM 64x9 Controller Rdy_out Chro_out CLK RST Rdy_in Chro_in Qdct_in(11:0) Zigzag_out(11:0) addr sel_ram en_ram

Hình 4.23 : Sơ đồ nguyên lý hoạt động của khối quét zigzag

Khi có tín hiệu rdy_in=’1’, thì RAM1 sẽ ghi lần lượt các giá trị qdct_in(11:0) vào, trong khi đó RAM2 chưa đọc dữ liệu ra cũng như ghi dữ liệu vào (xem xét trong 64 chu kỳ xung nhịp đầu tiên), lúc này bộ điều khiển Controller thiết lập tín hiệu sel_ram=’0’. Trong 64 chu kỳ tiếp theo, bộ controller thiết lập en_ram=’1’ (mức tích cực), sel_ram=’1’. Điều này có nghĩa là RAM1 đang đọc dữ liệu ra theo địa chỉ addr mà controller gửi tới, và RAM2 đang ghi dữ liệu vào. Trong 64 chu kỳ kế tiếp, controller đưa ra en_ram=’1’, sel_ram=’0’, tức là RAM1 đang ghi dữ liệu vào và RAM2 đang đọc dữ liệu ra. Qúa trình cứ tiếp tục như vậy cho tới khi kết thúc dữ liệu đưa vào. Các tín hiệu điều khiển tại đầu ra rdy_out và chro_out là tín hiệu trễ của các tín hiệu đầu vào rdy_in và chro_in với độ trễ là 64 chu kỳ xung nhịp.

Một phần của tài liệu các thuật toán cơ bản của chuẩn nén ảnh tĩnh JPEG Baseline (Trang 79 - 81)