Drupal Views: Passing a Variable
First of all, instead of using taxonomy, I would recommend a module like Entity Reference or References to create links between 'download' and 'product' nodes. I think Entity reference is your best bet in this case, because the module page explicitly says it supports "Integration with Views (for both forward and backward references)".

Once you have defined the download-product relations, you can build your view. The key to your solution is the concept of "contextual filters". A contextual filter is a filter with a variable filter value. You will find the settings for it in the right column when editing a view. I can't give you detailed instructions because I don't have a test site with entity reference here, but you'll need to take the following steps:


create a view, listing nodes of type 'download' in a block
add a contextual filter on the entity reference field in your download nodes
when configuring the contextual filter, under "When the filter value is NOT available" choose "Provide default value" -> "Content ID from URL".


So what does this all mean? You now have created a view that will only display download-nodes where the entity reference value is equal to the content ID detected in the URL.

Now, try if it works by enabling the block on product pages. Good luck - I hope this helps.