Xõy dựng khối quột zigzag

Một phần của tài liệu Nghiên cứu ứng dụng FPGA thực hiện thuật toán watermarking miền DCT cho ảnh số (Trang 92 - 94)

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) :

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 Nghiên cứu ứng dụng FPGA thực hiện thuật toán watermarking miền DCT cho ảnh số (Trang 92 - 94)