QAM for analog and digital waves
When I ran your code in Matlab I got the following warning message:

Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND =  6.912349e-21. 
&gt; In firls at 175 


It turns out that the problem is the "/Fs/2" part.  You are trying to normalize the frequencies from $0$ to $\frac{F_s}{2}$ into the range $0$ to $1$.  The problem is that Matlab divides the numbers in order, so even though what you want is /(Fs/2) what you are getting is /(Fs*2).  Changing the line to the following-

b = firls(N,[0 fpass fstop Fs/2]/(Fs/2), [1 1 0 0], [1 1]);


fixes the problem.