Michail-Petrushko / Work_NT-Lab

0 stars 0 forks source link

Алгоритм преобразования HSV-RGB #10

Open netnazgul opened 4 years ago

netnazgul commented 4 years ago

https://github.com/Michail-Petrushko/Work_NT-Lab/blob/0125deecd1c3086d803b426d3746f2933e782a5b/HSV-RGB/HSV-RGB.srcs/sources_1/new/hsv_to_rgb.v#L48-L51 Потенциально опасная высокоуровневая конструкция, использующая умножение и деление. Данные операции нетривиальны в логическом описании и могут потребовать большого количества ресурсов для исполнения, либо специальных макроячеек умножителей/делителей. Также не будут учтены проблемы переполнения, что усугубляется незаданной разрядностью сигналов Vinc, Vdec, Vmin, v.

Достаточно длинная логическая цепочка для Vmin также вызывает много вопросов. https://github.com/Michail-Petrushko/Work_NT-Lab/blob/0125deecd1c3086d803b426d3746f2933e782a5b/HSV-RGB/HSV-RGB.srcs/sources_1/new/hsv_to_rgb.v#L43 https://github.com/Michail-Petrushko/Work_NT-Lab/blob/0125deecd1c3086d803b426d3746f2933e782a5b/HSV-RGB/HSV-RGB.srcs/sources_1/new/hsv_to_rgb.v#L50 и далее в RGB.

Следует продумать оптимизацию алгоритма под использование в HDL, либо поискать готовые варианты. Возможно расширение переменных, если 8 бит не даёт достаточной точности. В таком случае можно использовать для расчётов, например, 16 бит, а для вывода использовать старшие 8. https://stackoverflow.com/a/22120275/4066912 http://www.javascripter.net/faq/rgb2hsv.htm https://www.scientific.net/AMR.816-817.527 https://www.researchgate.net/figure/Hardware-Architecture-for-RGB-to-HSV-and-HSV-to-RGB-Conversion_fig3_263928530

Michail-Petrushko commented 4 years ago

подумаю над этим позже